用Validator框架实现基本的表单验证

用Validator框架实现基本的表单验证,需要对ActionForm Bean、struts-config.xml、validation.xml、资源文件、JSP进行改动,例子:

ActionForm Bean

如果要使用Validator框架,应该用ValidatorForm或DynaValidatorForm或它们的子类。

struts-config.xml

  1. <struts-config>  
  2.   <form-beans>  
  3.     <form-bean name="loginForm" type="org.apache.struts.validator.DynaValidatorForm">  
  4.       <form-property name="username" type="java.lang.String"/>  
  5.       <form-property name="password" type="java.lang.String"/>  
  6.     form-bean>  
  7.   form-beans>  
  8.   
  9.   <action-mappings>  
  10.     <action path="/login"              
  11.             type="com.yourcompany.struts.action.LoginAction"  
  12.             name="loginForm"  
  13.             attribute="loginForm"  
  14.             input="/login.jsp"                             
  15.             scope="request"                
  16.             validate="true">  
  17.       <forward name="success" path="/index.jsp"/>  
  18.     action>  
  19.   action-mappings>  
  20.   
  21.   <message-resources key="app" parameter="com.yourcompany.struts.ApplicationResources"/>  
  22.      
  23.   <plug-in className="org.apache.struts.validator.ValidatorPlugIn">  
  24.     <set-property property="pathnames"  
  25.                   value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>  
  26.   plug-in>  
  27. struts-config>  

这里和不用Validator的struts-config.xml有两处不同:

① 在action<action></action>标签中,增加了input和validate属性,input指定当表单验证失败时将跳转到的页面。

② 在配置文件的最后增加了plug-in <plug-in></plug-in> 标签。

validation.xml

  1. <form-validation>  
  2.   <formset>  
  3.     <form name="loginForm">  
  4.       <field property="username" depends="required">  
  5.         <msg name="required" key="error_text_missing"/>  
  6.         <arg0 key="label_username"/>  
  7.       field>  
  8.     form>  
  9.   formset>  
  10. form-validation>  

如果loginForm是ValidatorForm或DynaValidatorForm,这里form标签里的name属性将指定ActionForm Bean的名字,即对应于struts-config.xml中form-bean标签里的name属性;如果loginForm是ValidatorActionForm或DynaValidatorActionForm,这里form标签里的name属性将指定Action的path,即对应于struts-config.xml中action标签里的path属性。

资源文件

ApplicationResources.properties
  1. label_username=username   
  2.   
  3. error_text_missing={0} is required.  

JSP

login.jsp
  1. <html:text property="username"/>  
  2. <font color="red">  
  3.   <html:errors bundle="app" property="username"/>  
  4. font>  

增加html:errors <html:errors> <html:errors> 标签来显示验证失败信息,其中bundle属性对应于struts-config.xml中message-resources标签<message-resources></message-resources>里的key属性,property属性对应于validation.xml中field标签<field></field>里的property属性。 </html:errors> </html:errors>

你可能感兴趣的:(框架,bean,xml,jsp,struts)