2011-10-29 16 views
5

Instalé SpringSource Tool Suite 2.8.0. Estoy tratando de incluir un archivo JS en un JSP, usando la plantilla Spring MVC como punto de partida. Mi JSP se ve así:STS Spring MVC: Cómo incluir un archivo JS en 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 está bajo src \ \ principales recursos y se ve así: "¡Hola mundo"

window.alert("A"); 

El resultado es que se imprime sin la alerta :-(

Intenté poner el archivo JS en diferentes lugares, cambiando el src para que sea con/sin "/", e incluso agregué un mapeo de servlet en web.xml para usar "predeterminado" servlet para "* .js". nada parece funcionar.

¿Qué estoy haciendo mal?

+0

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

+1

STS en realidad no factoriza aquí.Solo está intentando empaquetar una aplicación web estándar de Java. – jiggy

Respuesta

3

es el archivo js siendo incluido en el archivo .war? yo suelo poner mis js y css en src/main/webapp. algo así como src/main/webapp/js y src/main/webapp/css.

En segundo lugar, puede hacer referencia a ella apropiadamente utilizando c: url que llevará ca es poner el contexto de la aplicación allí y esas cosas.

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

Puede utilizar las herramientas de Firebug o desarrollador de Chrome para ver si usted está recibiendo un 404 a.js y ver qué camino se pide en realidad.

+0

¡Gracias! Usé una combinación de mover mi archivo a src/main/webapp, usando c: url y agregando un mapeo de servlet en web.xml para usar el servlet "predeterminado" para "* .js". –

3

Aconsejo colocar esos archivos js bajo la carpeta webapp. (Por lo general ponerlos bajo webapp/recursos/js)

Y para hacer este camino accesible, utilizo el MVC : recursos etiqueta:

Esta etiqueta permite que las solicitudes de recursos estáticos después de una determinada El patrón de URL debe ser servido por un ResourceHttpRequestHandler desde cualquiera de una lista de ubicaciones de recursos. Esto proporciona una forma conveniente de servir los recursos estáticos de desde ubicaciones distintas de la raíz de la aplicación web, , incluidas las ubicaciones en el classpath. La propiedad de período de caché puede ser utilizada para establecer encabezados de vencimiento futuros lejanos (1 año es la recomendación de herramientas de optimización como Page Speed ​​e YSlow) así que que el cliente utilizará más eficientemente. El controlador también evalúa correctamente el encabezado Last-Modified (si está presente) para que se devuelva un código de estado 304 según corresponda, evitando gastos generales innecesarios para recursos que ya están en caché en el cliente . Por ejemplo, para servir las peticiones de recursos con un patrón de URL de /recursos/** de un directorio de recursos públicos dentro de la raíz de la aplicación web , la etiqueta se utiliza como sigue:

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

Fuente: Spring Reference

Cuestiones relacionadas