• 动态ActionForm


    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.xmlEB-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,里面有很多静态方法。

  • 相关阅读:
    伪元素改变placeholder占位符属性的默认样式实例页面
    盒子中margin重叠问题
    html或CSS的图片如何随着网页界面的缩小或放大跟着左右移动 ?
    相对路径与绝对路径
    Html5 Canvas小知识
    dl,dt,dd怎么用
    雪碧图
    linux--mysql图形工具 tora
    apt-get彻底卸载删除软件http://www.tennfy.com/1518.html
    【转】 httpclient 模拟浏览器动作需注意的cookie和HTTP头等信息
  • 原文地址:https://www.cnblogs.com/wyhong/p/2390325.html
Copyright © 2020-2023  润新知