`
lucky_god
  • 浏览: 37531 次
社区版块
存档分类
最新评论

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

    博客分类:
  • java
阅读更多

环境:

    编程语言 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的关键词?

 

 

 

分享到:
评论

相关推荐

    Sitemesh 3 的使用及配置

    - **GitHub 地址**: [https://github.com/sitemesh/sitemesh3](https://github.com/sitemesh/sitemesh3) - **Maven 依赖**: ```xml &lt;groupId&gt;org.sitemesh&lt;/groupId&gt; &lt;artifactId&gt;sitemesh&lt;/artifactId&gt; ...

    MiddleGen+Sitemesh.zip

    下载页面:http://www.opensymphony.com/sitemesh/download.action 下载地址:https://sitemesh.dev.java.net/files/documents/887/43018/sitemesh-2.3.zip 新下载地址:...

    SiteMesh教程及SiteMesh官方文档翻译

    &lt;%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %&gt; &lt;title&gt;&lt;decorator:title default="装饰器页面"/&gt;&lt;/title&gt; &lt;decorator:head/&gt; &lt;/head&gt; sitemesh的例子 ...

    sitemesh教程

    &lt;%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%&gt; &lt;title&gt;&lt;decorator:title default="装饰器页面..." /&gt;&lt;/title&gt; &lt;decorator:head /&gt; &lt;/head&gt; sitemesh 的例子 ...

    sitemesh布局知识点汇总

    &lt;%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %&gt; &lt;%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page" %&gt; ...

    springMVC与sitemesh的结合

    而Sitemesh则是一个页面布局和装饰框架,主要用于处理Web应用中的页面布局问题,比如统一头部、底部和侧边栏,提升用户体验并简化开发。 将Spring MVC与Sitemesh结合使用,可以实现更高效的Web应用开发。以下是对这...

    页面装饰器(sitemesh)实例源代码

    页面装饰器(Sitemesh)是一种广泛用于Web应用的开源框架,它的主要功能是提供页面布局和装饰功能,使得开发者可以方便地实现统一的页面头部、尾部、侧边栏等元素,从而提高网站的整体风格一致性。在本实例中,我们...

    sitemesh

    **Sitemesh** 是一个广泛使用的开源Web应用框架,它主要功能是提供页面布局和装饰功能,用于统一网站的外观和感觉。Sitemesh通过在Web应用中引入“母版”(Master Page)的概念,使得开发者可以轻松地创建一致性的...

    siteMesh demo+文档

    4. **应用装饰**:通过在JSP页面中使用特殊的注解(例如`&lt;@sitemesh/page&gt;`),或者在Servlet中使用`PageDecorator`接口,可以指示SiteMesh对哪些页面进行装饰。 5. **自定义装饰策略**:如果你的项目有特殊需求,...

    sitemesh框架简单例子

    Sitemesh是一款强大的Web页面布局和装饰框架,它主要用于帮助开发者实现网站的统一外观和感觉。这个框架的主要功能是将页面的主体内容与页眉、页脚、侧边栏等通用部分分离,使得在大量网页中保持一致的设计风格变得...

    sitemesh 例子

    Sitemesh 是一款开源的网页布局和装饰框架,主要用于Java Web应用,它可以帮助开发者实现页面的统一布局,提高网站的视觉一致性。Sitemesh的工作原理是通过拦截HTTP请求,将请求的内容与预先定义好的模板结合,生成...

    sitemesh装饰器入门

    &lt;%@ taglib prefix="s" uri="http://www.opensymphony.com/sitemesh/page"%&gt; &lt;title&gt;&lt;s:property page="/title"/&gt;&lt;/title&gt; &lt;/head&gt; &lt;!-- header content --&gt; &lt;/div&gt; &lt;s:property region="content"/&gt;...

    sitemesh例子

    **Sitemesh简介** Sitemesh 是一个开源的 Web 应用程序装饰框架,主要用于解决网页布局和页面统一风格的问题。它通过拦截 HTTP 请求,将请求的页面内容与预先定义好的模板结合,使得开发者可以轻松地创建出统一的...

    sitemesh简单教程页面装配器

    可以通过官方网址下载:[http://www.opensymphony.com/sitemesh/](http://www.opensymphony.com/sitemesh/)。 3. **创建装饰器配置文件** `decorators.xml` 在`WEB-INF`目录下创建`decorators.xml`文件,该文件...

    SiteMesh

    SiteMesh 是一个开源的Web应用程序框架,主要用于帮助开发者实现页面布局和装饰功能。它通过拦截HTTP请求,将页面内容与布局模板相结合,从而提供了一种简单有效的方式来管理和控制Web应用的外观和感觉。在Web开发中...

    sitemesh简单demo

    &lt;%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="layout" %&gt; &lt;layout:content/&gt; &lt;/layout:content&gt; ``` 这段代码表示该 JSP 页面将使用名为 `default` 的装饰器,并将页面内容传递给...

    java sitemesh 页面框架

    Java Sitemesh是一个开源的页面布局和装饰框架,它的主要目标是帮助开发者统一网站的外观和感觉,提高代码复用性,并简化页面的复杂性。Sitemesh通过将页面分为内容区域和装饰模板来实现这一目标,使得开发者可以...

    siteMesh使用示例

    SiteMesh 是一个开源的 Web 应用程序框架,主要用于页面布局和装饰,它可以帮助开发者实现网站的统一界面风格,简化页面的布局工作。在本示例中,我们将深入探讨 SiteMesh 的基本用法,特别是在登录和注册页面的应用...

    sitemesh技术的应用.doc

    标题:Sitemesh技术的应用 描述与标签:Sitemesh技术的应用 Sitemesh技术是Web开发领域中一种用于页面装饰的重要工具,尤其在Java Web应用程序中被广泛应用。其核心功能在于能够统一网站的外观风格,使不同功能...

Global site tag (gtag.js) - Google Analytics