【问题标题】:How to load js and css file in Spring MVC 3 with tiles3如何使用tiles3在Spring MVC 3中加载js和css文件
【发布时间】:2014-03-03 07:33:46
【问题描述】:

我无法使用带有tiles3 的Spring MVC 3 将Js 和Css 文件加载到jsp。有人能帮我吗。这是我的配置。

项目文件夹结构

-SpringWithTiles
----webapp
--------resouces
----------script
--------------js
---------------myscript.js
--------------css
---------------style.css
----WEB-INF
-------jsp
---------signIn.jsp

servlet.xml

<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" id="viewResolver">  
    <property name="viewClass">  
    <value>  
        org.springframework.web.servlet.view.tiles3.TilesView  
    </value>  
     </property>  
</bean>  
    <bean id="tilesConfigurer"  
  class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">  
  <property name="definitions">  
        <list>
            <value>/WEB-INF/tiles.xml</value>
        </list>
    </property>
</bean>

 <mvc:resources mapping="/resources/script/js/**"  location="/webapp/resources/script/css" />
<mvc:resources mapping="/resources/script/css/**" location="/webapp/resources/script/js" />`

tiles.xml

 <tiles-definitions>  
   <definition name="baseLayout" template="/WEB-INF/layout/simpleLayout.jsp">  
       <put-attribute name="title" value="" />  
       <put-attribute name="header" value="/WEB-INF/layout/header.jsp"/>  
       <put-attribute name="body" value="" />  
       <put-attribute name="footer" value="/WEB-INF/layout/footer.jsp" />
  </definition>  
 <!--   <definition name="baseLayoutWithLeftPane" template="/jsp/layout 
/layoutWithLeftPane.jsp">  
       <put-attribute name="title" value="Learn - Educate" />  
       <put-attribute name="header" value="/jsp/layout/header.jsp" />  
       <put-attribute name="navigation" value="/jsp/layout/navigation.jsp" />  
       <put-attribute name="body" value="" />  
       <put-attribute name="footer" value="/jsp/layout/footer.jsp" />  
  </definition>  
   <definition name="welcome" extends="baseLayoutWithLeftPane">  
       <put-attribute name="title" value="Learn - Educate" />  
       <put-attribute name="body" value="/jsp/home.jsp" />  
  </definition>   -->
  <definition name="siginIn" extends="baseLayout">  
       <put-attribute name="title" value="siginIn" />  
       <put-attribute name="body" value="/WEB-INF/jsp/siginIn.jsp" />  
  </definition>       

web.xml

      <servlet-mapping>
    <servlet-name>babwitU</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
    <welcome-file-list>
    <welcome-file>/index.jsp</welcome-file>
  </welcome-file-list>

index.jsp

<a href="redirectToSiginIn">Click Here</a>

Contoller.java

@RequestMapping("/redirectToSiginIn")
public ModelAndView siginIn(){
    ModelAndView mav=new ModelAndView();
    mav.setViewName("/siginIn");
    return mav;
}

【问题讨论】:

  • 你得到什么错误?
  • 调试点未到达控制器请求映射方法
  • 这个问题与能够加载 JS/CSS 有什么关系吗?似乎您在说问题是当您单击登录链接时没有调用控制器?这就是您要解决的问题吗?
  • 感谢您的回复.. 我的问题得到了解决。

标签: css spring jsp spring-mvc tiles


【解决方案1】:

在 servlet.xml 中更改映射如下 location="/resources/script/css" 并给出你想要加载你的 js 或 css 的 resources/fileNameToLoad 的路径

在 location 属性中给出来自 /resources/** 的路径,而不是来自 /webapps/

【讨论】:

    【解决方案2】:

    正确的映射应该是:

    <mvc:resources mapping="/resources/script/js/**"  location="/resources/script/css" />
    <mvc:resources mapping="/resources/script/css/**" location="/resources/script/js" />
    

    location 属性中的第一个/ 表示已经是${webappRoot}

    【讨论】:

    • 我尝试了你的更改但没有工作,我遇到的问题是每当我点击链接(在 indec.jsp 中)时,调试点都没有到达控制器中的请求映射方法.你知道它为什么不来吗..请帮助我
    • 嗨@BabuG,但在index.jsp 上,样式表和js 文件已加载,对吧?如果您单击链接,则它不起作用,有很多可能性。你需要在另一个问题上声明你的堆栈跟踪问题。
    【解决方案3】:

    以下配置解决了我的问题..谢谢大家

    web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" id="WebApp_ID" version="2.4">
      <display-name>babwitU</display-name>
      <servlet>
        <servlet-name>babwitU</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>/WEB-INF/coreJava.xml,/WEB-INF/home.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>babwitU</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
        <welcome-file-list>
        <welcome-file>/index.jsp</welcome-file>
      </welcome-file-list>
    
      <!-- <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener> -->
    
    </web-app>
    

    servelt.xml

        <context:component-scan base-package="com.babwitU.life.dream.controller" />
        <mvc:annotation-driven />  
        <bean id="propertyConfigurer"
            class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <!-- <property name="location" value="classpath:jdbc.properties" /> -->
        </bean>
    
    <!-- <bean id="viewResolver"
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/jsp"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>  -->
        <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" id="viewResolver">  
        <property name="viewClass">  
        <value>  
            org.springframework.web.servlet.view.tiles3.TilesView  
        </value>  
         </property>  
    </bean>  
        <bean id="tilesConfigurer"  
      class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">  
      <property name="definitions">  
            <list>
                <value>/WEB-INF/tiles.xml</value>
            </list>
        </property>
    </bean>
    
         <mvc:resources mapping="/resources/**"  location="/resources/" />
    

    controller.java

    @RequestMapping(value ="redirectToSiginIn", method = RequestMethod.GET)
        public ModelAndView viewSiginIn(){
            ModelAndView mav=new ModelAndView();
            mav.setViewName("siginIn");
            return mav;
        }
        @RequestMapping(value ="home", method = RequestMethod.GET)
        public ModelAndView viewHome(){
            ModelAndView mav=new ModelAndView();
            mav.setViewName("home");
            return mav;
        }
        @RequestMapping(value ="java", method = RequestMethod.GET)
        public ModelAndView viewJava(){
            ModelAndView mav=new ModelAndView();
            mav.setViewName("java");
            return mav;
        }
    

    myjsp.jsp

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title> <tiles:getAsString  name="title" ignore="true"></tiles:getAsString >
    </title>
    <!-- <script type="text/javascript" src="resources/script/js/appjs.js"></script>
     --><link rel="stylesheet" type="text/css" href="resources/script/style.css">
    </head>
    <body>
    

    文件夹结构

      -springwithtiles
        ---webapp
        -----resources
        -------images
        ----------one.jpg
        -------script
        ------------style.css
        ------------myjs.js
        -----web-inf
        --------jsp
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-19
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 2016-01-28
      相关资源
      最近更新 更多