使用动态ActionForm-DynaActionForm(应用&Validator)

来源:互联网 发布:linux dd命令 进度 编辑:程序博客网 时间:2024/05/22 06:31

参考:http://annygn.blog.ccidnet.com/blog/ccid/do_showone/tid_124947.html                                                         && book: STRUTS开发入门与项目实践  (里面的Validator一直不起作用,弄了一天现在才知道原因了)

我用的是MyEclipse的Add Struts Capabilities产生的struts.jar,从书的光盘里下载的不知道是什么版本,不一样。用那个Struts.jar,Validator就起作用,用我下载的就不管用。

整个项目:

struts-config.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
 "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
 
<struts-config>

 <data-sources>
  <data-source key="oracleDB1" type="org.apache.commons.dbcp.BasicDataSource">
    <set-property property="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <set-property property="url" value="jdbc:oracle:thin:@127.0.0.1:1521:oradb"/>
    <set-property property="maxActive" value="5"/>
    <set-property property="username" value="carol"/>
    <set-property property="password" value="carol"/>
   </data-source>
 </data-sources>


 <form-beans>
  <form-bean name="formBean1" type="classmate.UserForm"/>
  <form-bean  name="registForm"
   type="org.apache.struts.validator.DynaValidatorForm">
   <form-property name="name" type="java.lang.String"/>
   <form-property name="psw1" type="java.lang.String"/>
   <form-property name="psw2" type="java.lang.String"/>
  </form-bean>
 </form-beans>

 <global-forwards>
  <forward name="failed" path="/error.jsp"/>
  <forward name="successed" path="/right.jsp"/>
  <forward name="registSuccessed" path="/registRight.jsp"/>
 </global-forwards>

 <action-mappings>
  <action path="/login" type="classmate.LoginAction" name="formBean1" scope="request" validate="true" input="/error.jsp"/>
  <action path="/registSubmit" type="classmate.RegistAction" name="registForm" scope="request" validate="true" input="/error.jsp"/>
  <action path="/regist" forward="/regist.jsp"/>
 </action-mappings>
 
 <message-resources parameter="classmate.MyResource"/>
 --配置STRUTS验证插件
    <plug-in  className="org.apache.struts.validator.ValidatorPlugIn">
       <set-property
         property="pathnames"
         value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
    <set-property property="stopOnFirstError" value="false"/>
   </plug-in>
 
</struts-config>

其实主要也就是STRUTS-CONFIG.XML的配置,其他的两个validator-rules.xml是struts自带的,而 validation.xml是自己编的一些验证规则,这里是:<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE form-validation PUBLIC
          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
          "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
         
<form-validation>
    <formset>
      <form name="registForm">
         <field
            property="name"
            depends="required,maxlength">
      <arg0 key="label.username"/>      
         <arg1 key="${var:maxlength}" resource="false" />
         <var>
            <var-name>maxlength</var-name>
            <var-value>2</var-value>
         </var>
         </field> 
        
         <field
            property="psw1"
            depends="required,validwhen,maxlength">
      <arg0 key="label.password"/>
          <arg1 key="${var:maxlength}" resource="false" />
         <var>
            <var-name>maxlength</var-name>
            <var-value>2</var-value>
         </var>
         <var>
            <var-name>test</var-name>
            <var-value>((psw2 ==*this*) and (*this* != null))</var-value>
         </var>
        </field> 
        
      </form>           
   </formset>  
</form-validation>
里面具体原理在网上查查就有,与之配合的还有:MyResource.properties里面的:

errors.required={0} is null
errors.minlength={0} can not less than {1} char.
errors.maxlength={0} can not more than {1} char.
errors.validwhen={0} unmatch
颜色对应的部分到时候就会在<action-mapping/>里定义的错误页面中的<html:errors/>来显示。