论坛首页 入门技术论坛

struts1.2表单validator验证中,如何解决多处验证问题?

浏览 3221 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-10-10  

现有用户注册、用户登陆、密码修改、用户信息修改等几个功能,需要的也就一个user表。

但是在页面中提供的是不同的输入项目。用validator验证时,看下面的validation.xml文件里的一段:

xml 代码
  1. <form name="userForm">  
  2.             <field property="loginname" depends="required">  
  3.                 <arg key="user.loginname" resource="true" />  
  4.             field>  
  5.             <field property="password" depends="required,minlength">  
  6.                 <arg key="user.password" resource="true" />  
  7.                 <arg name="minlength" key="${var:minlength}" resource="false" />  
  8.                 <var>  
  9.                     <var-name>minlengthvar-name>  
  10.                     <var-value>8var-value>  
  11.                 var>  
  12.             field>  
  13.             <field property="mail" depends="required,email">  
  14.                 <arg key="user.mail" resource="true" />  
  15.             field>  
  16.             <field property="name" depends="required">  
  17.                 <arg key="user.name" resource="true" />  
  18.             field>  
  19.         form>  

这是在用户注册时需要验证的4个字段

请看用户注册的JSP页面代码:

xml 代码
  1. <div class="g_main">  
  2.     <div class="concenter">  
  3.     <div class="u_regist_all">  
  4.         <div><img src="${css}/images/form_title.gif" />div>  
  5.         <div class="u_regist_middle">  
  6.             <html:form action="/userm.do" focus="loginname" styleClass="u_regist_form" onsubmit="return validateUserForm(this)">  
  7.                 <input type="hidden" name="method" value="regist"/>  
  8.                 <input type="hidden" name="pagefrom" value="${ pagefrom }"/>  
  9.                 <label>用户名:label>  
  10.                     <html:text property="loginname" styleClass="text"/><em>*em><br />  
  11.                     <logic:messagesPresent property="loginname">  
  12.                         <label>label>  
  13.                         <div class="u_err">  
  14.                             <html:errors property="loginname" >html:errors><br />  
  15.                         div>  
  16.                     logic:messagesPresent>  
  17.                        
  18.                 <label>真实姓名:label>  
  19.                     <html:text property="name" styleClass="text"/><em>*em><br />  
  20.                     <logic:messagesPresent property="name">  
  21.                         <label>label>  
  22.                         <div class="u_err">  
  23.                             <html:errors property="name">html:errors><br />  
  24.                         div>  
  25.                     logic:messagesPresent>  
  26.                 <label>性别:label>  
  27.                     <input type="radio" name="sex" value="1" class="u_radio" />男   
  28.                     <input type="radio" name="sex" value="0" class="u_radio" checked="checked" /><br />  
  29.                 <label>电子邮件:label>  
  30.                     <html:text property="mail" styleClass="text"/><em>*em><br />  
  31.                     <logic:messagesPresent property="mail">  
  32.                         <label>label>  
  33.                         <div class="u_err">  
  34.                             <html:errors property="mail">html:errors><br />  
  35.                         div>  
  36.                     logic:messagesPresent>  
  37.                 <label>密码:label>  
  38.                     <html:password property="password" styleClass="text"/><em>*不能少于8个字符em><br />  
  39.                     <logic:messagesPresent property="password">  
  40.                         <label>label>  
  41.                         <div class="u_err">  
  42.                             <html:errors property="password">html:errors><br />  
  43.                         div>  
  44.                     logic:messagesPresent>  
  45.                 <label>请再次输入密码:label>  
  46.                     <input type="password" name="repassword" class="text" onblur="checkrepass();"/><em>*em><br />  
  47.                     <label id="labelrepassword" style="display:none">label>  
  48.                     <div class="u_err" id="divrepassword" style="display:none;">  
  49.                            
  50.                     div>  
  51.                 <label>固定电话:label>  
  52.                     <html:text property="tel" styleClass="text"/><br />  
  53.                 <label>移动电话:label>  
  54.                     <html:text property="mobile" styleClass="text"/><br />  
  55.                 <label>邮政编码:label>  
  56.                     <html:text property="zip" styleClass="text"/><br />  
  57.                 <label>详细地址:label>  
  58.                     <html:text property="addr" styleClass="u_address"/><br />  
  59.             html:form>  
  60.             <html:javascript formName="userForm" staticJavascript="false" dynamicJavascript="true" cdata="false"/>  
  61.             <script type="text/javascript" src="${ctx}/scripts/validator.jsp">script>  
  62.         div>  
  63.         <div class="u_regist_bottom"><img type="image" src="${css}/images/m_button_02.gif" onclick="if(validateUserForm(document.userForm)) document.userForm.submit();"/>div>  
  64.     <!---->  
  65.     div>  
  66.     <!---->  
  67.     div>  
  68. <!---->  
  69. div>  
  70.   
  71. <script language="javascript">  
  72. function checkrepass()   
  73. {   
  74.     var flag = true;   
  75.     var errmsg = "";   
  76.     if(document.userForm.password.value == "" || document.userForm.repassword.value == "")   
  77.     {   
  78.         flag = false;   
  79.         errmsg = "请输入密码和确认密码";   
  80.     }   
  81.     else if(document.userForm.password.value.length <8 || document.userForm.repassword.length <8)   
  82.     {   
  83.         flag = false;   
  84.         errmsg = "密码和确认密码字符不能少于8个";   
  85.     }   
  86.     else if(document.userForm.password.value != document.userForm.repassword.value)   
  87.     {   
  88.         flag = false;   
  89.         errmsg = "两次密码输入不一致";   
  90.     }   
  91.        
  92.     if(flag == false)   
  93.     {   
  94.         document.getElementById("labelrepassword").style.display = '';   
  95.         document.getElementById("divrepassword").style.display = '';   
  96.         document.getElementById("divrepassword").innerHTML = errmsg;   
  97.     }   
  98.     else   
  99.     {   
  100.         document.getElementById("labelrepassword").style.display = 'none';   
  101.         document.getElementById("divrepassword").style.display = 'none';   
  102.         document.getElementById("divrepassword").innerHTML = "";   
  103.     }   
  104.        
  105.     return flag;   
  106. }   
  107. script>  

 

当在注册页面注册时验证确实起作用了

但是在其它页面就会出现JS脚本出错信息

 原因是其它页面中并不会包含validation.xml中提到的所有的4个字段的信息,比如用户密码修改页面就不会列出用户其它信息,

但JS却还是会去找这4个字段对应的表单元素,所有JS就执行通 不过了。

想问一下,像这样的情况该如何解决?有没有更好的办法来使用这个struts的validator框架?

论坛首页 入门技术版

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