`
froast
  • 浏览: 251674 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在struts2.0中对指定方法进行validation验证

阅读更多

最近公司项目使用struts2.0, 在用到struts2.0中的validation框架时,当为一个Action指定Actionname-validation.xml验证规则后,validation interceptor会为该Action中的每个方法都执行validation,这样很烦。

(1)有一种解决方法是为其余不需要进行验证的方法加上annotation,即在方法前加上@SkipValidation。

(2)另一种方法是今天在mailing list中看到的,为Action中的指定方法指定一个验证规则,命名为Actionname-alias-validation.xml,在struts2.0自带的mailreader例子中有使用,可以参考。

如mailreader的例子中,struts中的配置如下:

xml 代码
  1. <package name="subscription" namespace="/" extends="mailreader-support">  
  2.   
  3.         <global-results>  
  4.             <result name="input">/Subscription.jspresult>  
  5.             <result type="redirect-action">Registration_inputresult>  
  6.         <global-results>  
  7.   
  8.         <action name="Subscription_save" method="save" class="mailreader2.Subscription">  
  9.             <interceptor-ref name="user-submit" />  
  10.         <action>  
  11.   
  12.         <action name="Subscription_*" method="{1}" class="mailreader2.Subscription" />  
  13.   
  14.     <package>  

然后在mailreader2包下有一个Subscription类,及一个Subscription-Subscription_save-validation.xml文件,还有一个Subscription-validation.xml文件。

注意:Subscription_save是在struts 中定义的action的name,在struts中还要指定Subscription_save所对应的方法。

(3)还有一种方法,也是我认为最简单的方法就是如下配置:

xml 代码
  1. <package name="subscription" namespace="/" extends="mailreader-support">      
  2.       
  3.         <global-results>      
  4.             <result name="input">/Subscription.jspresult>      
  5.             <result type="redirect-action">Registration_inputresult>      
  6.         <global-results>      
  7.       
  8.         <action name="Subscription" class="mailreader2.Subscription">      
  9.               <interceptor-ref name="defaultStack">  
  10.                  <param name="validation.excludeMethods">*param>  
  11.                  <param name="validation.includeMethods">需要验证的方法名称,以逗号分隔param>  
  12.             interceptor-ref>  
  13.         <action>      
  14.     <package>      
分享到:
评论
8 楼 cumt_TTR 2012-09-22  
第三种方法是不是要写一个拦截器继承MethodFilterInterceptor ??
7 楼 kevin002 2007-08-23  
Puras 写道
kevin002 写道
你好,有一个问题我想请教一下,
<action name="list" class="DetailAction">
<result>detail.jsp</result>
</action>
<action name="add" class="DetailAction" method="add">
<result name="input">photo_detail?pid=${pid}</result>          
<result type="redirect-action">photo_detail?pid=${pid}</result>
</action>

我定义了一个DetailAction-add-validation.xml文件来对输入的评论进行验证.如果验证失败返回这个页面,但是什么错误提示也不会显示

<action name="add" class="DetailAction" method="add">
<result name="input">detail.jsp</result>          
<result type="redirect-action">photo_detail?pid=${pid}</result>
</action>
如果这样写的话,错误提示是可以显示的,但是文章内容就不会显示出来了,只有一个评论框,有什么好的办法没有呢?


我也遇到过这种问题
是加了一个<interceptor-ref name="prepare" />拦截器
不知道还有没有更好的解决办法.
我加上<interceptor-ref name="prepare" />拦截器之后,
<result name="input">detail?pid=${pid}</result>
这句代码里面的pid值得不到了,不知道是怎么回事了.
6 楼 Puras 2007-08-23  
kevin002 写道
你好,有一个问题我想请教一下,
<action name="list" class="DetailAction">
<result>detail.jsp</result>
</action>
<action name="add" class="DetailAction" method="add">
<result name="input">photo_detail?pid=${pid}</result>          
<result type="redirect-action">photo_detail?pid=${pid}</result>
</action>

我定义了一个DetailAction-add-validation.xml文件来对输入的评论进行验证.如果验证失败返回这个页面,但是什么错误提示也不会显示

<action name="add" class="DetailAction" method="add">
<result name="input">detail.jsp</result>          
<result type="redirect-action">photo_detail?pid=${pid}</result>
</action>
如果这样写的话,错误提示是可以显示的,但是文章内容就不会显示出来了,只有一个评论框,有什么好的办法没有呢?


我也遇到过这种问题
是加了一个<interceptor-ref name="prepare" />拦截器
不知道还有没有更好的解决办法.
5 楼 kevin002 2007-08-23  
不好意思,上面写的有些问题,下面的才是.

你好,有一个问题我想请教一下,
<action name="detail" class="DetailAction">
<result>detail.jsp</result>
</action>
<action name="add" class="DetailAction" method="add">
<result name="input">detail?pid=${pid}</result>
<result type="redirect-action">detail?pid=${pid}</result>
</action>

我定义了一个DetailAction-add-validation.xml文件来对输入的评论进行验证.如果验证失败返回这个页面,但是什么错误提示也不会显示

<action name="add" class="DetailAction" method="add">
<result name="input">detail.jsp</result>
<result type="redirect-action">detail?pid=${pid}</result>
</action>
如果这样写的话,错误提示是可以显示的,但是文章内容就不会显示出来了,只有一个评论框,有什么好的办法没有呢?
4 楼 kevin002 2007-08-23  
你好,有一个问题我想请教一下,
<action name="list" class="DetailAction">
<result>detail.jsp</result>
</action>
<action name="add" class="DetailAction" method="add">
<result name="input">photo_detail?pid=${pid}</result>          
<result type="redirect-action">photo_detail?pid=${pid}</result>
</action>

我定义了一个DetailAction-add-validation.xml文件来对输入的评论进行验证.如果验证失败返回这个页面,但是什么错误提示也不会显示

<action name="add" class="DetailAction" method="add">
<result name="input">detail.jsp</result>          
<result type="redirect-action">photo_detail?pid=${pid}</result>
</action>
如果这样写的话,错误提示是可以显示的,但是文章内容就不会显示出来了,只有一个评论框,有什么好的办法没有呢?
3 楼 jiajv_ 2007-08-01  
不错的
2 楼 hesy_007 2007-08-01  
woshiwuji 写道
你好!
有一种问题向你请教一下,
如果使用通配符的配置,
只有一个<result name='input'>/inputpage.jsp</result>
返回结果。
如果不同的action方法想返回不同的页面,是不是就不能能做了呢?


你可以采用Wildcard Mappings的方式
例:
<action name="/edit*" class="org.apache.struts.webapp.example.Edit{1}Action">
    <result name="failure" path="/mainMenu.jsp"/>
    <result name="input" path="/{1}.jsp"/>
</action>
1 楼 woshiwuji 2007-07-28  
你好!
有一种问题向你请教一下,
如果使用通配符的配置,
只有一个<result name='input'>/inputpage.jsp</result>
返回结果。
如果不同的action方法想返回不同的页面,是不是就不能能做了呢?

相关推荐

    struts 2.0 验证框架

    1.针对验证的action在action的包下新建一个xml文件,命名:action的名-validation.xml 2.src下的资源文件 3.struts.xml中引入资源文件

    Spring2.5+Struts2.0+hibernate3.0+Dwr+jquery+displayTag

    2 利用struts2 的LoginAction-validation.xml 3 在bean里把service包;暴露DWR,写了一个验证用户名的流程 4 采用jpa作为POJO,还是减少配置 5 加入display的分页,并且是物理分页 打开后自已建表sql.txt jdbc....

    AutoCode代码生成器(SSH版)

    【用于JAVA开发中的 Struts2.0 + Spring2.0 + Hibernate3.2 框架整合程序开发】 强大的支撑功能,堪称JAVA SSH编程的利器,你绝对值得拥有! 自动生成以下所有内容(即:完整的Java SSH支持的工程) Sturts2.0配置--&gt;...

    ssh代码生成器轻松、快捷

    用于JAVA开发中的 Struts2.0 + Spring2.0 + Hibernate3.2 框架整合程序开发】 强大的支撑功能,堪称JAVA SSH编程的利器,你绝对值得拥有! 自动生成以下所有内容(即:完整的Java SSH支持的工程) Sturts2.0配置--&gt; ...

    AutoCode代码生成器【SSH版】

    【用于JAVA开发中的 Struts2.0 + Spring2.0 + Hibernate3.2 框架整合程序开发】 强大的支撑功能,堪称JAVA SSH编程的利器,你绝对值得拥有! 自动生成以下所有内容(即:完整的Java SSH支持的工程) Sturts2.0配置--&gt;...

    SSH代码生成工具 SSH代码生成器

    JSP文件--&gt; 具有Struts2.0支持的增、删、改、查页面及自定义查询、自动分页等操作 Action--&gt; 业务Action.java和导出Excel的Action等 VO --&gt; bean.java及 bean.hbm.xml配置文件 Service --&gt; Service接口定义类 ...

    java面试宝典

    134、在JSP中如何定义方法 33 135、在JSP中能发送EMAIL吗 34 136、在SERVLET中我能调用一个JSP错误页吗 34 137、APPLET和JSP如何通讯 35 138、JSP如何与EJB SessionBean通讯 35 139、当我使用一个结果集时,如何防止...

    千方百计笔试题大全

    134、在JSP中如何定义方法 33 135、在JSP中能发送EMAIL吗 34 136、在SERVLET中我能调用一个JSP错误页吗 34 137、APPLET和JSP如何通讯 35 138、JSP如何与EJB SessionBean通讯 35 139、当我使用一个结果集时,如何...

    Java/JavaEE 学习笔记

    Struts2.0..263 第一章 MVC Model.........................263 第二章 Struts Basic264 第三章 Action,Result & Struts2 Tag Library......................267 第四章 Data Transfer & Type Converter..273 第五...

    J2EE学习笔记(J2ee初学者必备手册)

    Struts2.0..263 第一章 MVC Model.........................263 第二章 Struts Basic264 第三章 Action,Result & Struts2 Tag Library......................267 第四章 Data Transfer & Type Converter..273 第五...

Global site tag (gtag.js) - Google Analytics