问题描述:使用Struts2.0.6+Sitemesh2.2.1+Freemark2.3.8的过程中,装饰Action请求的结果页面不会有问题,但是如果装饰直接访问的JSP页面会出现如下错误:
java 代码
- javax.servlet.ServletException: Error applying decorator: null
解决方案:经过调试发现是FreeMarkerPageFilter的getLocale方法没有对invocation添加非空判断造成的,错误代码如下:
java 代码
- protected Locale getLocale(ActionInvocation invocation, Configuration configuration) {
- if (invocation.getAction() instanceof LocaleProvider) {
- return ((LocaleProvider) invocation.getAction()).getLocale();
- } else {
- return configuration.getLocale();
- }
- }
改正后的代码如下:
java 代码
- protected Locale getLocale(ActionInvocation invocation, Configuration configuration) {
- if (invocation != null && invocation.getAction() instanceof LocaleProvider) {
- return ((LocaleProvider) invocation.getAction()).getLocale();
- } else {
- return configuration.getLocale();
- }
- }
问题描述:使用Struts2.0.6+Sitemesh2.2.3,我有一个请求/customer/page.action,其结果页面为WEB-INF/jsp/customer/list.jsp,我希望使用main装饰器对返回结果进行装饰,如果配置如下:
xml 代码
- <decorator name="main" page="main.ftl">
- <pattern>/WEB-INF/jsp/customer/list.jsppattern>
- decorator>
则无法成功进行装饰,如果配置如下:
xml 代码
- <decorator name="main" page="main.ftl">
- <pattern>/*pattern>
- decorator>
则可以成功进行装饰。
解决方案:经过调试发现,原来装饰器是根据请求的URI路径匹配需要装饰的页面的,而且此URI路径是相对于上下文路径的,因此针对上述需求正确的配置如下:
xml 代码
- <decorator name="main" page="main.ftl">
- <pattern>/customer/page.actionpattern>
- decorator>
问题描述: 使用Struts2.0.6+Sitemesh2.2.3+Hibernate3.2.2,配置如下:
xml 代码
- <filter>
- <filter-name>struts-cleanup</filter-name>
- <filter-class>
- org.apache.struts2.dispatcher.ActionContextCleanUp
- </filter-class>
- </filter>
-
- <filter>
- <filter-name>hibernateFilter</filter-name>
- <filter-class>
- org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
- </filter-class>
- </filter>
- <filter>
- <filter-name>sitemesh</filter-name>
- <filter-class>
- org.apache.struts2.sitemesh.FreeMarkerPageFilter
- </filter-class>
- </filter>
-
- <filter>
- <filter-name>struts</filter-name>
- <filter-class>
- org.apache.struts2.dispatcher.FilterDispatcher
- </filter-class>
- </filter>
会导致如下错误
java 代码
- System Runtime Error:
- Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
如果去除对OpenSessionInViewFilter的配置则CRUD正常。
如果去除FreeMarkerPageFilter和ActionContextCleanUp过滤器,仅保留OpenSessionInViewFilter,CRUD也不能正常工作。
解决方案:待解决
分享到:
相关推荐
`独木成林_百度搜索.url`可能是一个链接,指向关于Struts2.0的在线资源或社区讨论,这对于开发者解决问题和学习新技巧非常有用。开发者可以通过搜索引擎找到丰富的教程、示例代码和解决方案,提升自己在Struts2.0上...
文件上传是Web应用中的常见需求,Struts2.0提供了完善的文件上传解决方案。它利用MultipartResolver接口处理多部分请求,支持单文件和多文件上传。开发者只需简单配置,即可轻松实现文件上传功能。 十、Struts2.0中...
Struts2.0是一款强大的Java Web开发框架,它在MVC设计模式的基础上提供了一套完整的解决方案,用于构建可维护、可扩展的企业级应用程序。在这个"都市供求信息系统"项目中,我们能够深入理解并实践Struts2.0的核心...
读者可以通过这个文件深入学习Struts2.0的各个知识点,按照章节逐步学习,或者根据需要查找特定问题的解决方案。 总的来说,这本书对于想要学习或提升Struts2.0框架技能的开发者来说,是一份宝贵的资源。通过系统的...
Struts2.0是一款强大的Java Web开发框架,它在MVC(Model-View-Controller)设计模式的基础上,为开发者提供了一种高效、灵活且可扩展的解决方案。本教程旨在帮助初学者逐步掌握Struts2.0的核心概念和技术,让你能够...
Struts2.0在继承了Struts1.x的基础上进行了大量的改进,提供了一种更加灵活、强大的控制层解决方案。 Struts2.0的核心组件包括Action、Result、Interceptor等。Action是业务逻辑处理的中心,负责接收HTTP请求并调用...
通过阅读这份文档,读者可以深入理解Struts2.0的各个组件和使用方法,解决开发过程中遇到的问题。 在实际项目开发中,Struts2.0可以与Spring、Hibernate等其他框架集成,构建更完整的Java EE解决方案。Spring可以...
最后,"struts2.0中文帮助手册2.chm"是官方的中文文档,包含了所有必要的API参考和用户指南,是学习和解决实际问题的宝贵资源。 总的来说,这个教程涵盖了Struts2.0的基础知识,从最基础的XML配置到复杂的Action链...
《基于Struts2.0的进销存管理系统详解》 在现代企业运营中,进销存管理系统的应用不可...通过深入理解和运用Struts2.0的相关技术,开发者可以构建出更加灵活、可扩展的进销存解决方案,为企业信息化建设提供强大支持。
总结,ibatis和Struts 2.0是Java Web开发中不可或缺的工具,它们分别解决了数据访问和页面展示的问题。通过合理的整合,可以构建出高效、可维护的Web应用程序。而ibatis的不断进化,使其在处理数据库操作时更加灵活...
- 良好的社区支持:Struts 2.0有庞大的开发者社区,遇到问题时可以得到及时的帮助和解决方案。 总的来说,Struts 2.0系列的学习对于Java Web开发者来说是必不可少的,它能帮助你构建稳定、高效、易于维护的Web应用...
Struts2.0是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它为开发者提供了更强大的控制层解决方案,使得应用程序的架构更加清晰,提高了代码的可维护性和可扩展性。而MySQL则是一款流行的开源关系...
Struts2.0是一款强大的Java Web开发框架,它在MVC设计模式的基础上提供了一整套解决方案,用于构建高效、可扩展且易于维护的Web应用程序。这个RAR文件包含了Struts2.0的核心jar包以及用于整合Spring框架的相关jar包...
Struts2.0是Java Web开发中非常重要的一个框架,它是Apache软件基金会的Jakarta项目下的产品,专门用于构建基于MVC(Model-View-Controller)模式的Web应用程序。本教程将深入探讨Struts2.0的核心概念、关键组件以及...
Struts2.0是一个强大的Java Web开发框架,它在MVC(Model-View-Controller)设计模式的基础上,为开发者提供了一种结构化的解决方案,极大地提高了开发效率和代码的可维护性。这个“Struts2.0很好的例子”压缩包很...
Struts2.0是Java Web开发中一个非常重要的框架,它是Apache软件基金会的Jakarta项目下的一个产品。这个框架主要用于构建MVC(Model-View-Controller)架构的应用程序,为开发者提供了一种组织代码和控制应用程序流程...
Struts2.0和Hibernate是Java Web开发中的两个重要框架,它们在构建高效、可维护的Web应用程序中扮演着核心角色。Struts2.0是一个MVC(模型-视图-控制器)框架,用于处理HTTP请求和管理应用程序的业务逻辑,而...
Struts2.0是一款强大的Java Web开发框架,它在MVC(Model-View-Controller)设计模式的基础上,为开发者提供了一种高效、灵活且可扩展的解决方案。这个压缩包文件"struts-2.0.9"包含了Struts2.0的版本2.0.9的所有...
这个“struts2.0中文帮助手册”应该包含了Struts2.0框架的详细使用指南、配置示例、API文档以及常见问题解答等内容,对于开发者来说,是学习和工作中不可或缺的工具。通过深入学习和理解手册中的内容,开发者可以更...