Java 未在jsp中加载Spring4和ApacheTiles css资源
我使用Spring4、tiles3创建简单的应用程序。我对jsp模板中的资源有问题 Web.xml:Java 未在jsp中加载Spring4和ApacheTiles css资源,java,spring,jsp,resources,tiles,Java,Spring,Jsp,Resources,Tiles,我使用Spring4、tiles3创建简单的应用程序。我对jsp模板中的资源有问题 Web.xml: <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/root-context.xml</param-value></context-param><listener> <lis
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/root-context.xml</param-value></context-param><listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
但是css不能加载。这个问题的解决办法是什么 为了让spring能够识别哪些资源是jsp/tiles或静态的,比如CSS和JS,您需要添加一个
resourceHandler
:
在XML中,这看起来像:
<mvc:resources mapping="/resources/**" location="/resources/" />
您可能会遇到的问题是,您没有在资源映射中定义名称空间。在使用tiles时,最佳实践建议也可以使用apachetiles引擎访问静态文件 要在jsp模板中执行此操作,请在文件开头添加以下内容
<tiles:importAttribute name="stylesheets" />
然后在标题中添加
<header>
<!-- stylesheets top -->
<c:forEach var="css" items="${stylesheets}">
<link rel="stylesheet" type="text/css" href="<c:url value="${css}"/>">
</c:forEach>
</header>
这将在jsp页面的开头注入定义中定义的所有css
然后,如果您想添加一个新的css文件,请进入admin.xml文件并执行如下操作
<definition name="home" extends="app.base">
<put-attribute name="title" value="Home Page" />
<put-attribute name="body" value="/WEB-INF/pages/home.jsp" />
<put-list-attribute name="stylesheets" inherit="true">
<add-attribute value="/resources/AdminLTE-2.3.0/bootstrap/css/bootstrap.min.css" />
</put-list-attribute>
</definition>
当然,正如@Norbert所提到的,资源必须是正确的服务器
此外,如果您使用的是tiles 3,请检查配置是否如下所示:
<bean id="tilesViewResolver"
class="org.springframework.web.servlet.view.tiles3.TilesViewResolver">
</bean>
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles/admin.xm</value>
</list>
</property>
</bean>
/WEB-INF/tiles/admin.xm
谢谢你的提示。我用两种方法解决了这个问题:
更改web.xml
:
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/admin/*</url-pattern>
</servlet-mapping>
appServlet
/管理员/*
或加上:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
违约
*.js
*.css
这个问题也使得网络浏览器将旧的东西保存在缓存中
<bean id="tilesViewResolver"
class="org.springframework.web.servlet.view.tiles3.TilesViewResolver">
</bean>
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles/admin.xm</value>
</list>
</property>
</bean>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/admin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
<url-pattern>*.css</url-pattern>
</servlet-mapping>