论坛首页 Java企业应用论坛

关于ValidatorForm的一个验证问题

浏览 4235 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-07-15  
我在做一个插入新用户信息的时候用到啦 ValidatorForm这个类,但是发现当我要验证所输入的
密码和确认密码是否一致时不能将两个所输入的密码关联起来验证,只能在Action类中的excute方法中进行验证
而我想用像下面的 validator()方法来保存一个错误信息时是没有用的
请问我怎样才能在 InsertAcountForm这个类中来验证这两个字段而不用在 excute()方法来验证?
InsertAcountForm.java 中的一部分
java 代码
  1. public class InsertAccountForm extends ValidatorForm {   
  2.   
  3.   
  4.     private String password;   
  5.   
  6.   
  7.     private String repeatedPassword;   
  8.     public ActionErrors validator(ActionMapping mapping,   
  9.             HttpServletRequest request) {   
  10.         ActionErrors errors=new ActionErrors();   
  11.         if(!this.password.equals(this.repeatedPassword)){   
  12.                
  13.             errors.add("errors",new ActionMessage("password.notequals.repeatedpassword"));   
  14.         }   
  15.         return errors;   
  16.     }   
validation.xml 的一部分
xml 代码
  1. <field property="password"  
  2.                 depends="required,minlength,maxlength">  
  3.                 <arg0 key="lable.password" />  
  4.                 <var>  
  5.                     <var-name>minlength</var-name>  
  6.                     <var-value>5</var-value>  
  7.                 </var>  
  8.                 <var>  
  9.                     <var-name>maxlength</var-name>  
  10.                     <var-value>16</var-value>  
  11.                 </var>  
  12.             </field>  
   发表时间:2007-07-15  
不好意思,不是我故意发的三次,我一点提交没反映
刷新啦两次就多提交啦两次,麻烦管理员把多的两个删掉吧
0 请登录后投票
   发表时间:2007-07-16  
首先你的jsp页面中要
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" 
value="/WEB-INF/validator/validator-rules.xml,/WEB-INF/validator/validations.xml"/>
</plug-in>


页面标签中需要有
 <html:javascript formName="ValidatorBean"/>
//ValidatorBean是你定义的formBean


提交的时候需要调用javascirpt验证方法
<html:form action="/maintainUserRecord.do" onsubmit="return validateValidatorBean(this)">


你看下这些都正确生成了没?
0 请登录后投票
   发表时间:2007-07-16  
我的意思不是用javascript来验证

只是想在服务器端验证而已,而又不想把Form的验证的代码写到Action中去,想直接就在validator中给解决啦!
是不是在validator()方法中写的任何代码将不会起到作用?
0 请登录后投票
   发表时间:2007-07-16  
自己写一个验证方法 
然后在validation.xml 设置的password时候  把那个重复框的input name当一个var给他   在那个方法里面可以拿到名字 然后再通过名字拿到form中的值 然后.......

具体去看struts的源代码  看看其他验证都是怎么做的
0 请登录后投票
   发表时间:2007-07-17  
試試struts 的validwhen 來驗證密码和确认密码
0 请登录后投票
   发表时间:2007-07-17  
feigme 写道
試試struts 的validwhen 來驗證密码和确认密码


谢谢楼上的,我已经解决啦,顺便贴出来给还没解决的人作个参考
但是下面的那个test好像是必须的
当我尝试把它换成其它的时候就会有错

<field property="password"
				depends="required,minlength,maxlength">
				<arg0 key="lable.password" />
				<var>
					<var-name>minlength</var-name>
					<var-value>5</var-value>
				</var>
				<var>
					<var-name>maxlength</var-name>
					<var-value>16</var-value>
				</var>
			</field>
			<field property="repeatedPassword" depends="validwhen">
				<arg0 key="password.notequals.repeated" />
				<var>
					<var-name>test</var-name>
					<var-value>(password==repeatedPassword)</var-value>
				</var>
			
			</field>
0 请登录后投票
   发表时间:2007-07-17  
<var-value>(password==repeatedPassword)</var-value> 
忘啦补充一点啦,就是这个地方后面的 repeatedPassword也可以替换成
*this* 
如:
<var-value>(password==*this*)</var-value> 
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics