`
visionary_2006
  • 浏览: 130437 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Struts 2, 值在验证失败回到原来页面的时候会丢失的解决方案

阅读更多

比如,当我要添加一个信用卡的时候,我需要信用卡的CardType, 这些数据是存在数据库中的,我要先通过action 的一个 create方法,取到信用卡的类型:

 

public String create()...{
        creditCardTypeList 
= this.creditCardTypeService.getList();
       
        
return SUCCESS;
}
 

Struts的配置文件:

 

<action name="create" method="create" class="example.CreditCardAction">     <result name="success">input.jsp</result>
</action>

 

input.jsp

...
<
s:select name="creditCard.creditCardTypeId" list="creditCardTypeList" listKey="creditCardTypeId" 
                listValue
="ccType" />
....

当提交input.jsp 的时候,Validate 检查没有通过,这时我需要回到input.jsp,此时应该下拉列表框的CreditType应该被保留,只需要在example.CreditCardAction 实现 Preparable接口,并实现prepare 方法,然后在add的 action中加上

 

<interceptor-ref name="prepare"/>
<interceptor-ref name="defaultStack"/>
就可以了
prepare方法:
public void prepare()...{
    creditCardTypeList 
= this.creditCardTypeService.getList(); 
}

Add Acton:

 

<action name="add" method="add" class="example.CreditCardAction">
    
<interceptor-ref name="prepare"/>
    
<interceptor-ref name="defaultStack"/>
    
<result name="input">input.jsp</result>            
    
<result name="success" type="redirect-action">
            
<param name="namespace">/credit</param>
        
<param name="actionName">list</param>
    
</result>
</action>

  这样,在验证前将首先调用 prepare方法,即使失败了回到input.jsp页面creditCardType选择框的值仍然存在。

<interceptor-ref name="defaultStack"/> 中的 defaultStack 是我们在struts.xml 中配置的,其中我们注释掉了 <interceptor-ref name="prepare"/> 这样在example.CreditCardAction中的其他Action就不会首先执行prepare方法,只有加上了 <interceptor-ref name="prepare"/> 的才会去首先执行 prepare方法。

<package name="project-default" abstract="true" extends="struts-default">
         
<interceptors>
         
<interceptor-stack name="defaultStack">
                
<interceptor-ref name="exception"/>
                
<interceptor-ref name="alias"/>
                
<interceptor-ref name="servletConfig"/>
                
<!--                           
                <interceptor-ref name="prepare"/>
                 
-->                              
                
<interceptor-ref name="i18n"/>
                
<interceptor-ref name="chain"/>
                
<interceptor-ref name="debugging"/>
                
<interceptor-ref name="profiling"/>
                
<interceptor-ref name="scopedModelDriven"/>
                
<interceptor-ref name="modelDriven"/>
                
<interceptor-ref name="fileUpload"/>
                
<!-- 
                <interceptor-ref name="checkbox">  
                       <param name="uncheckedValue">no</param>  
                </interceptor-ref>
                
-->
                
<interceptor-ref name="staticParams"/>
                
<interceptor-ref name="params">
                  
<param name="excludeParams">dojo..*</param>
                
</interceptor-ref>
                
<interceptor-ref name="conversionError"/>
                
<interceptor-ref name="validation">
                    
<param name="excludeMethods">input,back,cancel,browse</param>
                
</interceptor-ref>
                
<interceptor-ref name="workflow">
                    
<param name="excludeMethods">input,back,cancel,browse</param>
                
</interceptor-ref>
            
</interceptor-stack>
       
</interceptors>
    
</package>  

 

文章来源:http://blog.csdn.net/mengfanpp/archive/2008/03/20/2200309.aspx

分享到:
评论
1 楼 Acaleph 2008-09-03  
<action name="add" method="add" class="example.CreditCardAction">
应该为:
<action name="add" method="create" class="example.CreditCardAction">
吧。

相关推荐

    struts2+mysql图书馆管理系统

    Struts2+MySQL图书馆管理系统是一种基于Java Web技术的图书管理解决方案,它利用了Apache Struts2框架和MySQL数据库来实现高效、稳定且功能丰富的图书管理功能。Struts2是一个强大的MVC(Model-View-Controller)...

    jsessionid存在的问题及其解决方案

    ### 解决方案2:使用HTTP/2 Server Push或WebSocket HTTP/2的Server Push特性允许服务器在客户端请求之前发送资源,可以用来推送`jsessionid`,从而避免在URL中携带。而WebSocket是一种全双工通信协议,可以在保持...

    网上文件管理系统(struts)

    Struts作为一种强大的MVC(Model-View-Controller)框架,为Java Web开发提供了高效且结构化的解决方案。 1. **Struts框架简介** Struts是Apache软件基金会的一个开源项目,它为Java EE平台提供了一个 MVC 框架,...

    基于Struts2+Mysql排课系统

    该系统结合了Struts2框架和Mysql数据库,为教育机构提供了一套完整的排课解决方案。 首先,我们要理解Struts2框架在系统中的作用。Struts2是一个强大的MVC(Model-View-Controller)框架,它简化了Java Web应用程序...

    uploadify+struts2多文件上传实例

    `uploadify`与`Struts2`结合的多文件上传实例就是一个典型的解决方案,尤其针对跨浏览器兼容性问题,如在Firefox下的session问题。下面我们将深入探讨这两个技术以及它们如何协同工作。 `Uploadify`是一个基于...

    Tomcat部署项目时报错解决方案

    在部署Java Web应用程序到Apache Tomcat服务器的过程中,经常会遇到各种各样的问题,其中一种常见的错误就是启动时出现“严重:Exception starting filters struts2”这样的异常信息。本文将详细解析这个错误的原因,...

    JSP_重复提交_解决方法

    **场景说明**:在多步骤表单填写或操作流程中,如果用户在完成某个步骤后按下了“后退”按钮,可能会导致之前的操作被重复或数据丢失。这种情况下,防止用户后退到已提交数据的页面是非常必要的。 **是否需要处理**...

    ssh开发小型web网站

    Hibernate是持久层的解决方案,用于管理和操作数据库。它通过ORM(对象关系映射)技术将Java对象与数据库表对应,减少了手动编写SQL语句的工作量,使得数据操作更加便捷和灵活。 在SSH框架中,Ajax(Asynchronous ...

    struts+spring+hibernate资料

    **解决并发问题的方案**: - **设置事务隔离级别**:可以通过设置事务的隔离级别来避免这些并发问题的发生。事务隔离级别从低到高依次为: - `ReadUncommitted`(未提交读):最低级别的隔离级别,可能导致脏读、...

    商品管理系统

    本系统采用jQuery和Struts2框架进行开发,结合数据导入导出、数据库备份与还原以及强大的分页功能,为企业提供了一套全面的商品管理解决方案。 首先,jQuery是一种轻量级的JavaScript库,它简化了HTML文档遍历、...

    轻量级J2EE企业应用实战(part 3)共分5个part

    - **解决方案**:使用Struts提供的`&lt;html:text&gt;`标签替代HTML的`&lt;input&gt;`标签,可以保持表单数据在验证失败时不会丢失。这样用户即使验证未通过,也不会失去之前填写的信息,提升了用户体验。 - **代码示例**: ``...

    2014—SHH面试题

    - **请求验证失败后变量丢失**:可以将ActionForm的scope设为Session,以保留验证失败后的数据。 **Struts与Spring集成** - **直接在Action中获取Spring对象**:不推荐,因为耦合度过高。 - **Action由Spring管理**...

    Stripes 快速入门 pdf 中文版 下载

    当验证失败时,Stripes会自动收集所有的验证错误,并提供一种机制来在前端页面上显示这些错误信息。 ### 5. Resolution接口 Resolution接口是Stripes框架中的另一个关键概念,它定义了如何处理ActionBean执行后...

    SSH简易更新

    总之,“SSH简易更新”系统结合了Struts2的Web交互、Spring的依赖管理和AOP特性,以及Hibernate的数据持久化,构建了一个能够自动或手动检查和应用更新的解决方案。理解并掌握这些关键知识点对于维护和扩展这样的...

    在线考试.jsp

    这些技术与后端的Java和数据库紧密结合,形成一个完整的在线考试解决方案。 此外,为了保证系统的安全性和稳定性,开发者还会关注以下几点: - 数据库连接池的配置和优化,如使用`c3p0`或`Apache DBCP`,以提高...

    图书管理系统

    【图书管理系统】是一种用于图书馆日常运营的信息化解决方案,它整合了图书的采购、分类、借阅、归还、续借、遗失赔偿等各项功能,实现了图书管理的自动化和智能化。这种系统通常由多个模块组成,包括图书信息管理、...

    基于SSH框架实现的银行转账操作系统

    3. **Hibernate框架**:Hibernate作为持久层框架,简化了Java对象与数据库表之间的映射关系,提供了一种ORM(Object-Relational Mapping)解决方案。在银行转账系统中,Hibernate负责与数据库的交互,例如,读取用户...

    京东面试问题

    - **Struts2** 使用的是 `filter`,它的初始化时间通常比 servlet 要早,因为 filter 在应用启动时就会被初始化。Struts2 的 Filter 拦截所有的 HTTP 请求,并决定是否将其交给 Struts2 处理。 **2. 性能** - **...

    失物招领系统 java web

    SSH框架是Java Web开发中广泛应用的三层架构解决方案,由Spring负责控制层、Struts2处理表现层和Hibernate处理数据持久层。Spring作为核心容器,管理应用程序的组件和服务;Struts2则负责处理HTTP请求,实现视图与...

    Housing-rental-system.zip_房屋_房屋租赁_房屋租赁系统_租赁

    总的来说,这个基于Struts+Hibernate的房屋租赁系统提供了一个完整的解决方案,从用户注册、房源信息发布到租赁流程的管理,都体现了Web开发的高效和便捷。对于学习者而言,通过研究这个系统的源代码,可以深入了解...

Global site tag (gtag.js) - Google Analytics