Java学习

java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已经搬家了,新的地址是 http://www.javaly.cn 如果有对文章有任何疑问或者有任何不懂的地方,欢迎到www.javaly.cn (Java乐园)指出,我会尽力帮助解决。一起进步

 

表单验证:使用struts中的validator框架

第一步:

我们在struts-config.xml里:
Java代码
  1. <action-mappings >   
  2. <action   
  3. attribute="logForm"   
  4. input="/form/log.jsp"   
  5. name="logForm"   
  6. path="/log"   
  7. scope="request"   
  8. type="com.yourcompany.struts.action.LogAction"   
  9. validate="true"   
  10. <forward name="s" path="/form/MyJsp.jsp" />   
  11. </action>   
里面必须加上validate="true"这么句代码,否则,验证机制将可能不会运行。
另外,配置文件中还须加入以下代码,表示使用插件:
Java代码
  1. <plug-in className="org.apache.struts.validator.ValidatorPlugIn">  
  2.         <set-property property="pathnames"  
  3.             value="/WEB-INF/validator-rules.xml,  
  4.                                               /WEB-INF/validation.xml" />  
  5. </plug-in>   

注意加入<plug-in>标签的位置,该标签应该放在struts配置文件中的最后,具体位置在元素<struts- config></struts-config>内部,在<message-resources parameter="com.blog.struts.ApplicationResources" />之后,切记要注意位置,不然报错。
其次,在写法上,value的内容中/WEB-INF/validator-rules.xml是默认的,因为在项目使用struts框架时该文件已经在 此目录层次下面了,那么之后的/WEB-INF/validation.xml"又是什么呢?这里需要我们手动在WEB-INF目录下新建 validation.xml文件,这个文件有什么用?先看下其中写的什么。
Java代码
  1. <form-validation>  
  2.     <global>  
  3.     </global>  
  4.     <formset>  
  5.         <form name="userForm">  
  6.             <field property="userName"  
  7.                 depends="required,minlength,maxlength">  
  8.                 <arg0 key="userForm.userName" />  
  9.                 <arg1 name="minlength" key="${var:min}"  
  10.                     resource="false" />  
  11.                 <arg1 name="maxlength" key="${var:max}"  
  12.                     resource="false" />  
  13.                 <var>  
  14.                     <var-name>min</var-name>  
  15.                     <var-value>6</var-value>  
  16.                 </var>  
  17.                 <var>  
  18.                     <var-name>max</var-name>  
  19.                     <var-value>20</var-value>  
  20.                 </var>  
  21.             </field>  
  22.             <field property="password"  
  23.                 depends="required,minlength,maxlength,mask">  
  24.                 <arg0 key="userForm.password" />  
  25.                 <arg1 name="minlength" key="${var:min}"  
  26.                     resource="true" />  
  27.                 <arg1 name="maxlength" key="${var:max}"  
  28.                     resource="true" />  
  29.                 <var>  
  30.                     <var-name>min</var-name>  
  31.                     <var-value>6</var-value>  
  32.                 </var>  
  33.                 <var>  
  34.                     <var-name>max</var-name>  
  35.                     <var-value>20</var-value>  
  36.                 </var>  
  37.                 <var>  
  38.                     <var-name>mask</var-name>  
  39.                     <var-value>^"w+$</var-value>  
  40.                 </var>  
  41.             </field>  
  42.             <field property="email" depends="required,email">  
  43.                 <arg0 key="userForm.email" />  
  44.             </field>  
  45.             <field property="name" depends="required,maxlength">  
  46.                 <arg0 key="userForm.name" />  
  47.                 <arg1 name="maxlength" key="${var:max}"  
  48.                     resource="false" />  
  49.                 <var>  
  50.                     <var-name>max</var-name>  
  51.                     <var-value>20</var-value>  
  52.                 </var>  
  53.             </field>            
  54.             <field property="tel" depends="required,mask">  
  55.                 <arg0 key="userForm.tel" />  
  56.                 <var>  
  57.                     <var-name>mask</var-name>  
  58.                     <var-value>^"(?("d{3,4})")?[-|]?("d{7,8})$</var-value>  
  59.                 </var>  
  60.             </field>  
  61.             <field property="address" depends="required">  
  62.                 <arg0 key="userForm.address" />  
  63.             </field>  
  64.         </form>  
  65.         <form name="categoryForm">  
  66.             <field property="categoryName" depends="required">  
  67.                 <arg0 key="categoryForm.categoryName" />  
  68.             </field>  
  69.         </form>  
  70.     </formset>  
  71. </form-validation>  

Validation.xml:该配置文件是专供应用程序使用的,其中所描述的是特定ActionForm会用到validation-rule.xml文件中的哪些验证器。

1.<form-validation>元素
<form-validation>元素是validation.xml文件的根元素,它包含两个子元 素:<global>和<formset>元素。其中<global>元素可以出现零次或多 次,<formset>元素可以出现一次或多次。

2.<global>元素
<global>元素中通过<constant>子元素来定义常量表达式,每个<constant>子元素定义一个常量表达式,如果有多个常量表达式要定义则可以配置多个<constant>来实现。

3.<formset>元素
<formset>元素包括两个子元素<constant>和<form>。<constant>元素可以出现零次或多次,<form>元素可以出现一次或多次。
这里需要注意的是,在<form>标签中有包括<field>子元素。

4.<field>元素
<field>元素通过property属性指定字段的名字,通过depends属性指定具体的验证规则,验证规则来源于 validation-rule.xml中所写的验证方法,这里我们要简单介绍一下validation-rule.xml里面的验证规则是默认,那如果 我们有需要定义自己的验证规则也可以写在里面。<field>元素可包含的子元素 为<msg>,<arg>,<var>。

第二步
把validator框架使用的消息文本添加到应用的Resource Bundle中,如在ApplicationResources.properties中加入例如:
Java代码
  1. errors.header=<b><font color=ff0000><ul>  
  2. errors.footer=</ul></font></b>  
  3. errors.prefix=<li>  
  4. errors.suffix=</li>  
  5.   
  6. error.isexit="u7528"u6237"u540d"u5df2"u5b58"u5728"uff0c"u8bf7"u91cd"u65b0"u6ce8"u518c"uff01  
  7. error.username="u7528"u6237"u540d"u4e0d"u5408"u6cd5"uff0c"u8bf7"u91cd"u65b0"u586b"u5199"u7528"u6237"u540d"uff01  
  8. error.password="u5bc6"u7801"u4e0d"u5408"u6cd5"uff0c"u8bf7"u91cd"u65b0"u586b"u5199"u5bc6"u7801"uff01  
  9.   
  10. errors.required={0}"u4e3a"u5fc5"u586b"u5b57"u6bb5  
  11. errors.minlength={0}"u7684"u957f"u5ea6"u4e0d"u80fd"u5c0f"u4e8e{1}   
  12. errors.maxlength={0}"u7684"u957f"u5ea6"u4e0d"u80fd"u5927"u4e8e{1}   
  13. errors.email={0}"u5fc5"u987b"u4e3a"u6709"u6548"u90ae"u4ef6"u5730"u5740  
  14.   
  15. userForm.userName="u7528"u6237"u540d;  
  16. userForm.password="u5bc6"u7801;  
  17. userForm.email=Email;  
  18. userForm.name="u59d3"u540d;  
  19. userForm.sex="u6027"u522b;  
  20. userForm.tel="u8054"u7cfb"u7535"u8bdd;  
  21. userForm.address="u8054"u7cfb"u5730"u5740;  
  22. userForm.userType="u7528"u6237"u7c7b"u522b;  
  23.   
  24. categoryForm.categoryName="u7c7b"u522b"u540d"u79f0  



第三步
将Form的extends  ActionForm改为extends  ValidatorForm


第四步
在jsp页面当中,如果我们要创建一个在服务器端验证的页面,我们只需要在控件之后添加<html:errors property="password"/>,即:
<tr>
     <td>密码:</td>
     <td><html:password property="password" /><html:errors property="password"/></td>
</tr>
注意<html:errors property="password"/>之中的property对应的是form中定义的属性。

那么如果我们要创建一个在客户端进行验证的页面,我们需要如下步骤:
1.在<html:form></html:form>的外面加上<html:javascript formName="userForm"/>
2.在<html:form>中加入属性onsubmit=”return validateCardForm(this);”,即;
<html:form action="/save_user" method="post" enctype="multipart/form-data" onsubmit="return validateUserForm(this);">
3.同服务器端验证一样<td><html:password property="password" /><html:errors property="password"/></td>
重点
使用validator进行表单验证的步骤如上,其中最为关键的一步是,validation.xml文件中为表单配置验证规则的写法。
注意事项如下:
<form-validation>
<global>
在<global>中定义的常量表达式,在文件的其余地方可以直接引用。
即,这里配置的常量表达式是全局的
写法为:
<constant>
<constant-name>phone</constant-name>
<constant-value>^"(?("d{3})")?[-|]?("d{8})$<constant-value>
//定义一个名为:phone的正则表达式,3位区号+8位号码
</constant>
</global>
<formset>
<form name="userForm">
<field property="userName"
//这里的property要与form表单属性名对应
depends="required,minlength,maxlength">
//这里的depends用于指定对该属性使用什么验证规则,其规则来自于validator-rule.xml文件中所写的规则。指定多个验证器时,会依次调用,直到该表单通过所有验证。
<arg0 key="userForm.userName" />
//arg0对应的是ApplicationResources.property中的{0},即:
“errors.required={0}不能为空”,其作用是将arg0中key所对应的资源文件中的“userForm.userName= 用户名”的文中或者说是值替换到“errors.required={0}不能为空”中的{0},这样页面输出的是“用户名不能为空”;
下面的arg1同理{1}
Java代码
  1.                 <arg1 name="minlength" key="${var:min}"  
  2.                     resource="false" />  
  3.                 <arg1 name="maxlength" key="${var:max}"  
  4.                     resource="false" />  
  5.                 <var>  
  6.                     <var-name>min</var-name>  
  7.                     <var-value>6</var-value>  
  8.                 </var>  
  9.                 //var对应key="${var:min}"中的min  
  10.                 <var>  
  11.                     <var-name>max</var-name>  
  12.                     <var-value>20</var-value>  
  13.                 </var>  
  14.             </field>  
  15. </form>  
  16.     </formset>  
  17. </form-validation> 

转:http://www.javaeye.com/topic/192579

posted on 2009-07-09 10:17 找个美女做老婆 阅读(369) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

公告

本blog已经搬到新家了, 新家:www.javaly.cn
 http://www.javaly.cn

常用链接

留言簿(6)

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜