环境:
编程语言 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的关键词?
相关推荐
- **GitHub 地址**: [https://github.com/sitemesh/sitemesh3](https://github.com/sitemesh/sitemesh3) - **Maven 依赖**: ```xml <groupId>org.sitemesh</groupId> <artifactId>sitemesh</artifactId> ...
下载页面:http://www.opensymphony.com/sitemesh/download.action 下载地址:https://sitemesh.dev.java.net/files/documents/887/43018/sitemesh-2.3.zip 新下载地址:...
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %> <title><decorator:title default="装饰器页面"/></title> <decorator:head/> </head> sitemesh的例子 ...
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%> <title><decorator:title default="装饰器页面..." /></title> <decorator:head /> </head> sitemesh 的例子 ...
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %> <%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page" %> ...
而Sitemesh则是一个页面布局和装饰框架,主要用于处理Web应用中的页面布局问题,比如统一头部、底部和侧边栏,提升用户体验并简化开发。 将Spring MVC与Sitemesh结合使用,可以实现更高效的Web应用开发。以下是对这...
页面装饰器(Sitemesh)是一种广泛用于Web应用的开源框架,它的主要功能是提供页面布局和装饰功能,使得开发者可以方便地实现统一的页面头部、尾部、侧边栏等元素,从而提高网站的整体风格一致性。在本实例中,我们...
**Sitemesh** 是一个广泛使用的开源Web应用框架,它主要功能是提供页面布局和装饰功能,用于统一网站的外观和感觉。Sitemesh通过在Web应用中引入“母版”(Master Page)的概念,使得开发者可以轻松地创建一致性的...
4. **应用装饰**:通过在JSP页面中使用特殊的注解(例如`<@sitemesh/page>`),或者在Servlet中使用`PageDecorator`接口,可以指示SiteMesh对哪些页面进行装饰。 5. **自定义装饰策略**:如果你的项目有特殊需求,...
Sitemesh是一款强大的Web页面布局和装饰框架,它主要用于帮助开发者实现网站的统一外观和感觉。这个框架的主要功能是将页面的主体内容与页眉、页脚、侧边栏等通用部分分离,使得在大量网页中保持一致的设计风格变得...
Sitemesh 是一款开源的网页布局和装饰框架,主要用于Java Web应用,它可以帮助开发者实现页面的统一布局,提高网站的视觉一致性。Sitemesh的工作原理是通过拦截HTTP请求,将请求的内容与预先定义好的模板结合,生成...
<%@ taglib prefix="s" uri="http://www.opensymphony.com/sitemesh/page"%> <title><s:property page="/title"/></title> </head> <!-- header content --> </div> <s:property region="content"/>...
**Sitemesh简介** Sitemesh 是一个开源的 Web 应用程序装饰框架,主要用于解决网页布局和页面统一风格的问题。它通过拦截 HTTP 请求,将请求的页面内容与预先定义好的模板结合,使得开发者可以轻松地创建出统一的...
可以通过官方网址下载:[http://www.opensymphony.com/sitemesh/](http://www.opensymphony.com/sitemesh/)。 3. **创建装饰器配置文件** `decorators.xml` 在`WEB-INF`目录下创建`decorators.xml`文件,该文件...
SiteMesh 是一个开源的Web应用程序框架,主要用于帮助开发者实现页面布局和装饰功能。它通过拦截HTTP请求,将页面内容与布局模板相结合,从而提供了一种简单有效的方式来管理和控制Web应用的外观和感觉。在Web开发中...
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="layout" %> <layout:content/> </layout:content> ``` 这段代码表示该 JSP 页面将使用名为 `default` 的装饰器,并将页面内容传递给...
Java Sitemesh是一个开源的页面布局和装饰框架,它的主要目标是帮助开发者统一网站的外观和感觉,提高代码复用性,并简化页面的复杂性。Sitemesh通过将页面分为内容区域和装饰模板来实现这一目标,使得开发者可以...
SiteMesh 是一个开源的 Web 应用程序框架,主要用于页面布局和装饰,它可以帮助开发者实现网站的统一界面风格,简化页面的布局工作。在本示例中,我们将深入探讨 SiteMesh 的基本用法,特别是在登录和注册页面的应用...
标题:Sitemesh技术的应用 描述与标签:Sitemesh技术的应用 Sitemesh技术是Web开发领域中一种用于页面装饰的重要工具,尤其在Java Web应用程序中被广泛应用。其核心功能在于能够统一网站的外观风格,使不同功能...