2011-10-29 9 views
5

Ho installato SpringSource Tool Suite 2.8.0. Sto cercando di includere un file JS in un JSP, utilizzando il modello Spring MVC come punto di partenza. mio JSP si presenta così:STC Spring MVC: Come includere un file JS in un JSP

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ page session="false" %> 
<html> 
<head> 
    <title>Home</title> 
    <script type="text/javascript" src="/a.js"></script> 
</head> 
<body> 
    Hello world! 
</body> 
</html> 

a.js è sotto src \ principali risorse \ e si presenta in questo modo: "Ciao mondo"

window.alert("A"); 

Il risultato è che viene stampato senza l'avviso :-(

Ho provato a mettere il file JS in posti diversi, cambiando il src con/senza "/" e persino aggiungendo una mappatura servlet in web.xml per usare "default" servlet per "* .js". Niente sembra funzionare.

che cosa sto facendo di sbagliato?

+0

Correlato: http://stackoverflow.com/questions/3655316/servlets-browser-cant-access-css-images-when-doing-a-forward-to-a-jsp – BalusC

+1

STS in realtà non è un fattore qui.Stai solo provando a confezionare un'applicazione web java standard. – jiggy

risposta

3

è il file js sempre inclusi nel file .war? io di solito messo i miei js e css in src/main/webapp. qualcosa come src/main/webapp/js e src/main/webapp/css.

In secondo luogo, è possibile fare riferimento in modo appropriato utilizzando c: url che prenderà ca re di mettere il contesto dell'app lì e roba.

<script type="text/javascript" src="<c:url value="/a.js" />" /> 

È possibile utilizzare Firebug o gli sviluppatori di Chrome strumenti per vedere se si stanno ottenendo un 404 per a.js e vedere quale strada è in realtà richiede.

+0

Grazie! Ho usato una combinazione di spostare il mio file in src/main/webapp, usando c: url e aggiungendo una mappatura servlet in web.xml per usare il servlet "default" per "* .js". –

3

Suggerisco di mettere quei file js nella cartella webapp. (Io di solito metterli sotto webapp/resources/js)

E per rendere questo percorso accessibile, io uso il MVC: risorse tag:

Questo tag permette richieste di risorse statiche a seguito di un particolare Il pattern URL deve essere servito da un ResourceHttpRequestHandler da uno qualsiasi degli elenchi di risorse di . Questo fornisce un modo conveniente per servire le risorse statiche da posizioni diverse dalla root dell'applicazione Web, incluse le posizioni sul classpath. La proprietà del periodo di cache può essere utilizzata per impostare le intestazioni di scadenza future future (1 anno è la raccomandazione degli strumenti di ottimizzazione come Page Speed ​​e YSlow) quindi che verranno utilizzate in modo più efficiente dal client. Il gestore valuta anche correttamente l'intestazione Last-Modified (se presente) in modo che il codice di stato a 304 venga restituito come appropriato, evitando il sovraccarico non necessario per le risorse già memorizzate nella cache dal client . Ad esempio, per servire le richieste di risorse con un modello URL di /risorse/** da una directory di pubbliche risorse all'interno della radice dell'applicazione web , il tag potrebbe essere utilizzato come segue:

<mvc:resources mapping="/resources/**" location="/public-resources/"/> 

Fonte: Spring Reference

Problemi correlati