actionform太多会是系统太庞大,可以使用动态actionform,我们打印某个属性,可以使用DynaActionFom.get("属性名"),但是这样就失去了验证功能。我们用validate框架,需要俩包支持validate框架工作。新建一个.xml文件来调用 validator-rules.xml,就叫validation.xml吧。但是系统不认识,所以要以插件的形式在struts.xml里注册,多个xml文件用逗号隔开。动态ActionForm不支持validate框架,若是动态的则继承org.apache.struts.validator.DynaValidatorForm
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property value="/WEB-INF/validator-rules.xml,EB-INF/validation.xml" poperty="pathnames"/>
</plug-in>
validation.xml里的代码
<!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="regForm">
<field property="cname" depends="required">
<msg name="required" key="error.none"/>
<arg0 name="required" key="cname"/>
</field>
<field property="email" depends="required,email">
<msg name="required" key="error.none"/>
<arg0 name="required" key="email" resource="false"/>
<msg name="email" key="error.email"/>
</field>
<field property="phone" depends="required,long">
<msg name="required" key="error.none"/>
<arg0 name="required" key="phone" resource="false"/>
<msg name="long" key="error.number"/>
<arg0 name="long" key="phone" resource="false"/>
</field>
</form>
</formset>
</form-validation>
设定单个验证门限,前边的都是用的是否空,是否。。。
需要注意的是设定门限那一块
<field property="phone" depends="required,long,minlength,maxlength">
<msg name="required" key="error.none"/>
<arg0 name="required" key="phone" resource="false"/>
<msg name="long" key="error.number"/>
<arg0 name="long" key="phone" resource="false"/>
<msg name="minlength" key="error.minlength"/>
<arg0 name="minlength" key="phone" resource="false"/>
<arg1 name="minlength" key="${var:minlength}" resource="false"/>
<!-- 设定门限 -->
<var>
<var-name>minlength</var-name>
<var-value>7</var-value>
</var>
<msg name="maxlength" key="error.maxlength"/>
<arg0 name="maxlength" key="phone" resource="false"/>
<arg1 name="maxlength" key="${var:maxlength}" resource="false"/>
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
</field>
用${var:maxlength}取代10这个值是为了避免与下边的值重复。
设定多个验证门限
<field property="age" depends="required,integer,intRange">
<msg name="required" key="error.none"/>
<arg0 name="required" key="age" resource="false"/>
<msg name="integer" key="error.number"/>
<arg0 name="integer" key="age" resource="false"/>
<msg name="intRange" key="error.range"/>
<arg0 name="intRange" key="age" resource="false"/>
<arg1 name="intRange" key="0" resource="false"/>
<arg2 name="intRange" key="100" resource="false"/>
<!-- 设定门限,设定max,min就行了 -->
<var>
<var-name>min</var-name>
<var-value>0</var-value>
</var>
<var>
<var-name>max</var-name>
<var-value>100</var-value>
</var>
</field>
设定条件验证门限
<var>
<var-name>test</var-name>
<var-value>(前一个属性 == *this*)</var-value>
</var>
</var>
非动态类推荐使用类org.apache.commons.validator.GenericValidator,里面有很多静态方法。