`
wtnhwbb
  • 浏览: 166164 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts 2.0 问题解决记录

阅读更多

问题描述:使用Struts2.0.6+Sitemesh2.2.1+Freemark2.3.8的过程中,装饰Action请求的结果页面不会有问题,但是如果装饰直接访问的JSP页面会出现如下错误:

java 代码 
  1. javax.servlet.ServletException: Error applying decorator: null  

         解决方案:经过调试发现是FreeMarkerPageFilter的getLocale方法没有对invocation添加非空判断造成的,错误代码如下:

java 代码 
  1.   protected Locale getLocale(ActionInvocation invocation, Configuration configuration) {   
  2.         if (invocation.getAction() instanceof LocaleProvider) {   
  3.             return ((LocaleProvider) invocation.getAction()).getLocale();   
  4.         } else {   
  5.             return configuration.getLocale();   
  6.         }   
  7. }  

 改正后的代码如下:

java 代码 
  1. protected Locale getLocale(ActionInvocation invocation, Configuration configuration) {   
  2.     if (invocation != null && invocation.getAction() instanceof LocaleProvider) {   
  3.         return ((LocaleProvider) invocation.getAction()).getLocale();   
  4.     } else {   
  5.         return configuration.getLocale();   
  6.     }   
  7. }   

 

         问题描述:使用Struts2.0.6+Sitemesh2.2.3,我有一个请求/customer/page.action,其结果页面为WEB-INF/jsp/customer/list.jsp,我希望使用main装饰器对返回结果进行装饰,如果配置如下:

xml 代码 
  1. <decorator name="main" page="main.ftl">  
  2.  <pattern>/WEB-INF/jsp/customer/list.jsppattern>  
  3. decorator>  

 则无法成功进行装饰,如果配置如下:

xml 代码 
  1. <decorator name="main" page="main.ftl">  
  2.  <pattern>/*pattern>  
  3. decorator>  

则可以成功进行装饰。

        解决方案:经过调试发现,原来装饰器是根据请求的URI路径匹配需要装饰的页面的,而且此URI路径是相对于上下文路径的,因此针对上述需求正确的配置如下:

xml 代码 
  1. <decorator name="main" page="main.ftl">  
  2.  <pattern>/customer/page.actionpattern>  
  3. decorator>  

         问题描述: 使用Struts2.0.6+Sitemesh2.2.3+Hibernate3.2.2,配置如下:

xml 代码
  1. <filter>  
  2.   <filter-name>struts-cleanup</filter-name>  
  3.   <filter-class>  
  4.    org.apache.struts2.dispatcher.ActionContextCleanUp   
  5.   </filter-class>  
  6.  </filter>  
  7.  <!--Hibernate Open Session in View Filter-->  
  8.  <filter>  
  9.   <filter-name>hibernateFilter</filter-name>  
  10.   <filter-class>  
  11.    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter   
  12.   </filter-class>  
  13.  </filter>  
  14.  <filter>  
  15.   <filter-name>sitemesh</filter-name>  
  16.   <filter-class>  
  17.    org.apache.struts2.sitemesh.FreeMarkerPageFilter   
  18.   </filter-class>  
  19.  </filter>  
  20.  <!-- Struts filter -->  
  21.  <filter>  
  22.   <filter-name>struts</filter-name>  
  23.   <filter-class>  
  24.    org.apache.struts2.dispatcher.FilterDispatcher   
  25.   </filter-class>  
  26.  </filter>  

 会导致如下错误

java 代码
  1. System Runtime Error:    
  2. 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也不能正常工作。

        解决方案:待解决

分享到:
评论
1 楼 lu_pp 2007-11-19  
  <filter-class> 
   org.apache.struts2.sitemesh.FreeMarkerPageFilter  
  </filter-class>是不是不对阿?

我的是
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
</filter>

STRUTS2+SPRING+HIBERNATE+SITEMESH可以用

相关推荐

    Struts2.0的api

    `独木成林_百度搜索.url`可能是一个链接,指向关于Struts2.0的在线资源或社区讨论,这对于开发者解决问题和学习新技巧非常有用。开发者可以通过搜索引擎找到丰富的教程、示例代码和解决方案,提升自己在Struts2.0上...

    Struts_2.0从入门到精通

    文件上传是Web应用中的常见需求,Struts2.0提供了完善的文件上传解决方案。它利用MultipartResolver接口处理多部分请求,支持单文件和多文件上传。开发者只需简单配置,即可轻松实现文件上传功能。 十、Struts2.0中...

    struts2.0开发的都市供求信息系统

    Struts2.0是一款强大的Java Web开发框架,它在MVC设计模式的基础上提供了一套完整的解决方案,用于构建可维护、可扩展的企业级应用程序。在这个"都市供求信息系统"项目中,我们能够深入理解并实践Struts2.0的核心...

    Struts2.0框架书籍

    读者可以通过这个文件深入学习Struts2.0的各个知识点,按照章节逐步学习,或者根据需要查找特定问题的解决方案。 总的来说,这本书对于想要学习或提升Struts2.0框架技能的开发者来说,是一份宝贵的资源。通过系统的...

    Struts2.0中文教

    Struts2.0是一款强大的Java Web开发框架,它在MVC(Model-View-Controller)设计模式的基础上,为开发者提供了一种高效、灵活且可扩展的解决方案。本教程旨在帮助初学者逐步掌握Struts2.0的核心概念和技术,让你能够...

    struts2.0中文帮助手册

    Struts2.0在继承了Struts1.x的基础上进行了大量的改进,提供了一种更加灵活、强大的控制层解决方案。 Struts2.0的核心组件包括Action、Result、Interceptor等。Action是业务逻辑处理的中心,负责接收HTTP请求并调用...

    struts2.0中文教程

    通过阅读这份文档,读者可以深入理解Struts2.0的各个组件和使用方法,解决开发过程中遇到的问题。 在实际项目开发中,Struts2.0可以与Spring、Hibernate等其他框架集成,构建更完整的Java EE解决方案。Spring可以...

    struts2.0 教程(标签,XML配置,入门例子,帮助手册)

    最后,"struts2.0中文帮助手册2.chm"是官方的中文文档,包含了所有必要的API参考和用户指南,是学习和解决实际问题的宝贵资源。 总的来说,这个教程涵盖了Struts2.0的基础知识,从最基础的XML配置到复杂的Action链...

    基于struts2.0的进销存管理系统

    《基于Struts2.0的进销存管理系统详解》 在现代企业运营中,进销存管理系统的应用不可...通过深入理解和运用Struts2.0的相关技术,开发者可以构建出更加灵活、可扩展的进销存解决方案,为企业信息化建设提供强大支持。

    ibatis & struts 2.0详细介绍

    总结,ibatis和Struts 2.0是Java Web开发中不可或缺的工具,它们分别解决了数据访问和页面展示的问题。通过合理的整合,可以构建出高效、可维护的Web应用程序。而ibatis的不断进化,使其在处理数据库操作时更加灵活...

    Struts 2.0系列

    - 良好的社区支持:Struts 2.0有庞大的开发者社区,遇到问题时可以得到及时的帮助和解决方案。 总的来说,Struts 2.0系列的学习对于Java Web开发者来说是必不可少的,它能帮助你构建稳定、高效、易于维护的Web应用...

    struts2.0的jar包及mysql的jar包

    Struts2.0是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它为开发者提供了更强大的控制层解决方案,使得应用程序的架构更加清晰,提高了代码的可维护性和可扩展性。而MySQL则是一款流行的开源关系...

    struts2.0jar包及struts2.0与spring的整合jar包.rar

    Struts2.0是一款强大的Java Web开发框架,它在MVC设计模式的基础上提供了一整套解决方案,用于构建高效、可扩展且易于维护的Web应用程序。这个RAR文件包含了Struts2.0的核心jar包以及用于整合Spring框架的相关jar包...

    Struts2.0中文教程

    Struts2.0是Java Web开发中非常重要的一个框架,它是Apache软件基金会的Jakarta项目下的产品,专门用于构建基于MVC(Model-View-Controller)模式的Web应用程序。本教程将深入探讨Struts2.0的核心概念、关键组件以及...

    Struts2.0很好的例子

    Struts2.0是一个强大的Java Web开发框架,它在MVC(Model-View-Controller)设计模式的基础上,为开发者提供了一种结构化的解决方案,极大地提高了开发效率和代码的可维护性。这个“Struts2.0很好的例子”压缩包很...

    struts2.0相关学习资料

    Struts2.0是Java Web开发中一个非常重要的框架,它是Apache软件基金会的Jakarta项目下的一个产品。这个框架主要用于构建MVC(Model-View-Controller)架构的应用程序,为开发者提供了一种组织代码和控制应用程序流程...

    Struts2.0+Hibernate小实例

    Struts2.0和Hibernate是Java Web开发中的两个重要框架,它们在构建高效、可维护的Web应用程序中扮演着核心角色。Struts2.0是一个MVC(模型-视图-控制器)框架,用于处理HTTP请求和管理应用程序的业务逻辑,而...

    struts2.0 jar文件

    Struts2.0是一款强大的Java Web开发框架,它在MVC(Model-View-Controller)设计模式的基础上,为开发者提供了一种高效、灵活且可扩展的解决方案。这个压缩包文件"struts-2.0.9"包含了Struts2.0的版本2.0.9的所有...

    struts2.0中文帮助手册.rar

    这个“struts2.0中文帮助手册”应该包含了Struts2.0框架的详细使用指南、配置示例、API文档以及常见问题解答等内容,对于开发者来说,是学习和工作中不可或缺的工具。通过深入学习和理解手册中的内容,开发者可以更...

Global site tag (gtag.js) - Google Analytics