Java 未在jsp中加载Spring4和ApacheTiles css资源

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

我使用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>
<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>