SiteMesh Path website does not start with a "/" character

环境:

    编程语言 JAVA

    布局框架 SiteMesh 2.4

    后台视图控制 Spring MVC 4.0

    ...

操作:

    在SiteMesh框架配置文件decorators.xml中配置

  <decorator name="website" page="layouts/website.jsp" />

    在最终需返回的jsp(index.jsp)中加入

    <meta name="decorator" content="website"/>

    jsp所在项目位置:

    WEB-INF

     |   --views

     |       --websitepage

               |    --index.jsp

    Spring MVC视图文件解析:

    spring-mvc.xml 

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views"/>
   <property name="suffix" value=".jsp"/>
</bean>

    映射访问地址:

    @RequestMapping("index.html")
    public ModelAndView index(Model model, HttpServletRequest req, HttpServletResponse resp){
        return new ModelAndView("/websitepage/index");
    }

异常:

    javax.servlet.ServletException: java.lang.IllegalArgumentException: Path website does not start with a "/" character

at org.apache.shiro.web.servlet.AdviceFilter.cleanup(AdviceFilter.java:196)

at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:148)

at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)

at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)

at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)

at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)

at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)

at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)

at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)

at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)

at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)

at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2503)

at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2492)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Unknown Source)

解决:

    将 decorators.xml 文件中 

    <decorator name="website" page="layouts/website.jsp" />

    更改为

    <decorator name="cms_website" page="layouts/website.jsp" />

 后记:

    暂时还不知为何使用 website 作为名字时会出异常,难道是SiteMesh的关键词?

猜你喜欢

转载自fengjianrong.iteye.com/blog/2393946