Samuel Learning

  • 联系
  •  
  • 管理

文章分类(203)

  • 01 ASP/HTML(6)
  • 02 Script/CSS(16)
  • 03 C/C++
  • 04 XML(4)
  • 05 微软编程(26)
  • 06 J2EE(60)
  • 09 Linux(14)
  • 10 Database(27)
  • 11 报表打印
  • 12 打包安装(1)
  • 13 模式重构(2)
  • 14 系统架构
  • 15 敏捷开发(11)
  • 16 案例分析(30)
  • 17 Workflow(1)
  • 18 配置管理(1)
  • 19 项目管理
  • 20 英语(4)

新闻分类(52)

  • CXF学习
  • Hibernate学习(1)
  • iBatis学习(16)
  • Struts1学习(1)
  • Struts2学习(34)

.NET资源

  • adxmenu
  • C# Open Source
  • DNN Directory
  • M2Land
  • Windows Form FAQ
  • 中国DNN
  • 中国DNN联盟

Ajax

  • DoJo
  • GWT
  • JQuery
  • jquery autocomplete
  • jquery flexgrid
  • JQuery Form
  • jquery masked input
  • JQuery UI
  • jquery validation
  • Jquery 图表
  • jquery报表
  • jquery插件集合
  • Qooxdoo
  • Tibco GI
  • YUI
  • YUI-EXT
  • ZeroKode

Java开源

  • ABLE
  • Agile Tao
  • Ajax4JSF
  • Alfresco
  • AppFuse
  • Compiere
  • Equinox
  • Findbugs
  • Geronimo
  • Grails
  • Harmony
  • Hibernate论坛
  • JAG
  • Java开源大全
  • Java视线论坛
  • jBPM工作流
  • JSFTutorials
  • Nereide ERP
  • Ofbiz ERP
  • Opentaps ERP
  • operamasks
  • Petstore
  • Prototype.js
  • RIFE
  • Runa
  • SpringSide
  • Struts Menu
  • Sun Glassfish
  • Trails
  • YUI4JSF
  • 满江红

Mobile

  • Sencha

WEB资源

  • DHTML中心
  • DHTML参考手册
  • DHTML文档
  • EclipsePlugin
  • Firebug
  • GRO Clinux
  • jMaki
  • JSTL文档
  • LoadIcon
  • Openlaszlo
  • Struts Menu 展示
  • Web Test Tools
  • WebCtrs
  • Webdeveloper
  • 中国RIA开发者论坛

Workflow

  • E-Workflow
  • JBPM
  • OpenWFE
  • OSWorkflow
  • WFMC
  • Workflow Research

其他连接

  • confach
  • CPP
  • ejay
  • Giovanni
  • 丹佛
  • 交大e-learning
  • 交大研究生院
  • 可恶的猫
  • 天天@blog
  • 我的相册
  • 阿飞

大牛人

  • 32篇JBPM
  • David.Turing
  • HongSoft@业务集成
  • Joel
  • Koen Aers
  • Martinfowler
  • Raible Matt
  • Raible Wiki
  • Scott W.Ambler
  • Tom Baeyens
  • Uncle Bob
  • 一个世界在等待
  • 子在川上曰
  • 小布老师
  • 小明
  • 差沙
  • 徐昊
  • 江南白衣
  • 汪博士
  • 汪小金
  • 银狐999

开源软件

  • 2Bizbox ERP
  • CompiereCRM&ERP
  • EGW
  • Vtiger CRM
  • webERP

敏捷

  • Canoo
  • Cruisecontrol
  • DBUnit
  • EL4Ant
  • Extreme Programming
  • Fit
  • Fitnesse
  • JFrog
  • Liquibase
  • Maven
  • MockObjects
  • Selenium
  • Squish
  • xpairtise
  • XPlanner
  • XProgramming
  • 敏捷联盟

数据库

  • Oracle 中国
  • Oracle-ERP
  • Oracle在线社区

未归类

  • Aquarius Orm Studio
  • mambo建站系统
  • Oracle产品下载
  • 远程同步管理工具Capivara

经典框架

  • Apache Shale
  • formdef-struts
  • FreeMarker 主页
  • JBoss Seam
  • JSF 中心
  • JSF 入门应用
  • JSF中国
  • MyFaces官方
  • Spring 社区
  • Spring专业网站
  • Spring中文论坛
  • Spring参考手册
  • Spring官方网站
  • strecks-struts
  • Struts1
  • Struts2
  • Struts-layout
  • StrutsWiKi
  • Tapestry WIKI
  • Tapestry 官方
  • Tapestry4开发指南
  • Tapestry中文文档
  • Webwork2文档
  • Wicket

网络教程

  • Laliluna
  • RoseIndia
  • Sang Shin
  • Visualbuilder

著名站点

  • Buildix
  • Dev2Dev
  • IBM dev中国
  • InfoQ
  • ITPub
  • Java Eye
  • Java Research
  • JavaRead
  • JavaWorldTW
  • Matrix
  • PHP100
  • PHPX
  • SpringSideWiKi
  • TheServerSide
  • TWPHP
  • 中国工作流论坛

项目管理

  • 管理人网

最新评论

View Post

Validator-Struts-Examples1.3.8

 

Validator-Struts-Examples1.3.8

l 写ActionForm的验证

² 显示错误消息的标签定义

<logic:messagesPresent>

   <bean:message key="errors.header"/>

   <ul>

   <html:messages id="error">

      <li><bean:write name="error"/></li>

   </html:messages>

   </ul><hr>

</logic:messagesPresent>

² Action配置

<action path="/registration-submit" type="org.apache.struts.webapp.validator.RegistrationAction"

              name="registrationForm"

              scope="request"

              validate="true"

              cancellable="true"

              input="input">

          <forward name="input" path="/registration.do" />

          <forward name="success" path="/index.jsp" />

</action>

² ActionForm的配置

<form-bean name="registrationForm" type="org.apache.struts.webapp.validator.RegistrationForm" />

² ActionForm的定义

ValidationForm继承字ActionForm,提供了基于xml的验证方式, validation.xml和struts-config.xml通过form名称关联在一起,validation的field名称与validationForm的成员变量名称相同。

publicfinalclass RegistrationForm extends ValidatorFormimplements Serializable {

    private String action = null;

    private String sFirstName = null;

    private String sLastName = null;

    private String sAddr = null;

    private CityStateZip csz = new CityStateZip();

    private String sPhone = null;

private String sEmail = null;

…

}

² Validator Xml配置文件

<formset language="fr">

为法语环境定义验证

<form name="registrationForm">

      <field property="firstName" depends="required,mask,minlength">

        每个验证规则都有一个msg,msg来自资源文件,可以带参数。下面的参数说明资源描述的参数,内容和位置

<arg key="registrationForm.firstname.displayname" position="0"/>

Minlength由下面的minlength参数名称决定

        <arg name="minlength" key="${var:minlength}"resource="false" position="1"/>

        <var>

          <var-name>mask</var-name>

          表示小写字母组成

          <var-value>^"w+$</var-value>

        </var>

        <var>

          <var-name>minlength</var-name>

          <var-value>5</var-value>

        </var>

      </field>

      <field property="lastName" depends="required,mask,maxlength">

        <msg name="mask" key="registrationForm.lastname.maskmsg" />

        <arg key="registrationForm.lastname.displayname" position="0" />

        <arg name="maxlength" key="${var:maxlength}" resource="false" position="1"/>

         <var>

          <var-name>mask</var-name>

          <var-value>^[a-zA-Z]*$</var-value>

        </var>

        <var>

          <var-name>maxlength</var-name>

          <var-value>10</var-value>

        </var>

      </field>

      <field property="addr" depends="required">

        <arg key="registrationForm.addr.displayname" />

      </field>

      <field property="cityStateZip.city" depends="required,mask">

        <arg key="registrationForm.city.displayname" />

        <var>

          <var-name>mask</var-name>

          <var-value>^[a-zA-Z]*$</var-value>

        </var>

      </field>

      <field property="cityStateZip.stateProv" depends="required,mask">

        <arg key="registrationForm.stateprov.displayname" />

        <var>

          <var-name>mask</var-name>

          <var-value>^[a-zA-Z]*$</var-value>

        </var>

      </field>

      <field property="cityStateZip.zipPostal[1]" depends="required,mask">

        <arg key="registrationForm.zippostal.displayname" />

        <var>

          <var-name>mask</var-name>

          <var-value>${zip}</var-value>

        </var>

      </field>

      <field property="phone" depends="mask">

        <arg key="registrationForm.phone.displayname" />

        <var>

          <var-name>mask</var-name>

          <var-value>${phone}</var-value>

        </var>

      </field>

      <field property="email" depends="required,email">

        <arg key="registrationForm.email.displayname" />

      </field>

</form>

² Action的定义

 public ActionForward execute(

        ActionMapping mapping,

        ActionForm form,

        HttpServletRequest request,

        HttpServletResponse response)

        throws Exception {

        // Was this transaction cancelled?

        if (isCancelled(request)) {

            if (log.isInfoEnabled()) {

                log.info(

                    " "

                        + mapping.getAttribute()

                        + " - Registration transaction was cancelled");

            }

            removeFormBean(mapping, request);

            return (mapping.findForward("success"));

        }

        return mapping.findForward("success");

}

protectedvoid removeFormBean(

        ActionMapping mapping,

        HttpServletRequest request) {

        // Remove the obsolete form bean

        //mapping.getAttribute()得到得是formbean,释放他们可以缓解内存压力

        if (mapping.getAttribute() != null) {

            if ("request".equals(mapping.getScope())) {

                request.removeAttribute(mapping.getAttribute());

            } else {

                HttpSession session = request.getSession();

                session.removeAttribute(mapping.getAttribute());

            }

        }

}

l 写ActionForm的验证(js+server)

² Html Form定义

比普通的htmlform多了下面几个内容

<html:form action="registration-submit" onsubmit="return validateRegistrationForm(this);">

…

<html:submit property="submit" onclick="bCancel=false;">

     表示不忽略客户端验证

         <bean:message key="button.save"/>

      </html:submit>

      &nbsp;

      <html:reset>

         <bean:message key="button.reset"/>

      </html:reset>

      &nbsp;

      <html:cancel onclick="bCancel=true;">

    表示忽略客户端验证

         <bean:message key="button.cancel"/>

</html:cancel>   

…

<html:javascript formName="registrationForm"/>

l 写ActionForm的验证(js+server+向导)

注:实际上这个例子没有server端验证

² Html Form定义

<html:form action="multiRegistration-submit" onsubmit="return validateMultiRegistrationForm(this);">

 <html:hidden property="action"/>

 <html:hidden property="page" value="1"/>

…

</html:form>

<html:javascript formName="multiRegistrationForm" page="1"/>

<html:form action="multiRegistration-submit" onsubmit="return validateMultiRegistrationForm(this);">

 <html:hidden property="action"/>

 <html:hidden property="page" value="2"/>

…

</html:form>

<html:javascript formName="multiRegistrationForm" page="2"/>

² Action配置

<action path="/multiRegistration-submit"            type="org.apache.struts.webapp.validator.MultiRegistrationAction"

              name="multiRegistrationForm"

              scope="request"

              validate="false">

          <forward name="success" path="/welcome.do" />

          <forward name="input1" path="/multiRegistration1.jsp" />

          <forward name="input2" path="/multiRegistration2.jsp" />

</action>

² Action定义

public ActionForward execute(

        ActionMapping mapping,

        ActionForm form,

        HttpServletRequest request,

        HttpServletResponse response)

        throws Exception {

        // Extract attributes we will need

        RegistrationForm info = (RegistrationForm) form;

        // Was this transaction cancelled?

        if (isCancelled(request)) {

            if (log.isInfoEnabled()) {

                log.info(

                    " "

                        + mapping.getAttribute()

                        + " - Registration transaction was cancelled");

            }

            removeFormBean(mapping, request);

            return mapping.findForward("success");

        }

        ActionMessages errors = info.validate(mapping, request);

        if (errors != null && errors.isEmpty()) {

            if (info.getPage() == 1)

                return mapping.findForward("input2");

            if (info.getPage() == 2)

                return mapping.findForward("success");

        } else {

            this.saveErrors(request, errors);

            if (info.getPage() == 1){

                return mapping.findForward("input" + info.getPage());

            }

            if (info.getPage() == 2){

                return mapping.findForward("input" + info.getPage());

            }

        }

        return mapping.findForward("input1");

}

l 通用的验证举例

² Html Form定义

<html:form action="type-submit">

      <html:hidden property="action" />

      <table border="0">

        <tr>

          <th align="left">

            <bean:message key="typeForm.byte.displayname" />

          </th>

          <td align="left">

            <html:text property="byte" size="15" maxlength="15" errorStyle="background-color: yellow" />

          </td>

          <td align="left">&nbsp;

            <html:messages property="byte" id="error"><bean:write name="error" /></html:messages>

          </td>

</tr>

…

<nested:iterate property="nameList">

          <tr>

            <th align="left"> </th>

            <td align="left">

              <nested:textproperty="value" size="15" maxlength="15" errorStyle="background-color: yellow" />

            </td>

            <td align="left">&nbsp;

              <nested:messagesPresentproperty="value">

                  <nested:messagesid="error" property="value">

                      <bean:writename="error" />

                  </nested:messages>

              </nested:messagesPresent>

            </td>

          </tr>

</nested:iterate>

…

</html:form>

² ActionForm的定义

字段都定义成字符串了

publicfinalclass TypeForm extends ValidatorForm implements Serializable {

    private String action = null;

    private String name = null; //Used to test Multiform per page validation when property name is 'name'

    private String sByte = null;

    private String sShort = null;

    private String sInteger = null;

    private String sIntRange = null;

² 验证的xml配置

<form name="baseTypeForm">

      <field property="byte" depends="required,byte">

        <arg key="typeForm.byte.displayname" />

      </field>

      <field property="short" depends="required,short">

        <arg key="typeForm.short.displayname" />

      </field>

      <field property="integer" depends="required,integer">

        <arg key="typeForm.integer.displayname" />

      </field>

      <field property="intRange" depends="required,integer,intRange">

        <arg key="typeForm.intRange.displayname" />

        <arg name="intRange" key="${var:min}" resource="false" position="1" />

        <arg name="intRange" key="${var:max}" resource="false" position="2" />

        <var>

          <var-name>min</var-name>

          <var-value>10</var-value>

        </var>

        <var>

          <var-name>max</var-name>

          <var-value>20</var-value>

        </var>

      </field>

      <field property="long" depends="">

      </field>

      <field property="float" depends="required,float">

        <arg key="typeForm.float.displayname" />

      </field>

      <field property="floatRange" depends="required,float,floatRange">

        <arg key="typeForm.floatRange.displayname" />

        <arg name="floatRange" key="${var:min}" resource="false" position="1" />

        <arg name="floatRange" key="${var:max}" resource="false" position="2" />

        <var>

          <var-name>min</var-name>

          <var-value>-2.17</var-value>

        </var>

        <var>

          <var-name>max</var-name>

          <var-value>3.14</var-value>

        </var>

      </field>

      <field property="double" depends="">

      </field>

      <field property="date" depends="required,date">

        <arg key="typeForm.date.displayname" />

        <var>

          <var-name>datePatternStrict</var-name>

          <var-value>MM/dd/yyyy</var-value>

        </var>

      </field>

      <field property="creditCard" depends="required,creditCard">

        <arg key="typeForm.creditCard.displayname" />

      </field>

      <field property="email" depends="required,email">

        <arg key="typeForm.email.displayname" />

      </field>

      <field property="mask" depends="required,mask">

        <arg key="typeForm.mask.displayname" />

        <msg name="mask" key="typeForm.mask.error" />

        <var>

          <var-name>mask</var-name>

          <var-value>^[A-Z]*$</var-value>

        </var>

      </field>

      <field property="minMaxLength" depends="required,minlength,maxlength">

        <arg key="typeForm.minMaxLength.displayname" />

        <arg name="minlength" key="${var:minlength}" resource="false" position="1" />

        <arg name="maxlength" key="${var:maxlength}" resource="false" position="1" />

        <var>

          <var-name>minlength</var-name>

          <var-value>5</var-value>

        </var>

        <var>

          <var-name>maxlength</var-name>

          <var-value>20</var-value>

        </var>

      </field>

    </form>

    <form name="typeForm" extends="baseTypeForm">

      <field property="url" depends="required,url">

        <arg key="typeForm.url.displayname" />

      </field>

      <field property="long" depends="required,long">

        <arg key="typeForm.long.displayname" />

      </field>

      <field property="double" depends="required,double">

        <arg key="typeForm.double.displayname" />

      </field>

      <field property="value" indexedListProperty="nameList" depends="required">

        <arg key="typeForm.nested.name.displayname" />

      </field>

</form>

l 通用的验证举例(js+server)

² Html Form定义

<html:form action="jsType-submit" onsubmit="return validateJsTypeForm(this);">

…

<html:javascript formName="jsTypeForm" />

² Validator 配置

 <form name="jsTypeForm" extends="baseTypeForm">

      <field property="satisfaction" depends="required">

        <arg key="typeForm.option.satisfaction" />

      </field>

      <field property="osList" depends="required">

        <arg key="typeForm.option.os.list" />

      </field>

      <field property="overallSatisfaction" depends="required">

        <arg key="typeForm.radio.overall.satisfaction" />

      </field>

      <field property="wouldRecommend" depends="required">

        <arg key="typeForm.checkbox.wouldrecommend" />

      </field>

      <field property="usedLanguages" depends="required">

        <arg key="typeForm.checkbox.used.languages" />

      </field>

    </form>

l I18n variables

² Validate配置文件

<formset>

 

    <form name="i18nForm">

      <field property="name" depends="required,minlength,maxlength">

        <msg name="required" key="msg.required"      bundle="i18nExample" />

        <msg name="minlength" key="msg.minlength"     bundle="i18nExample" />

        <msg name="maxlength" key="msg.maxlength"     bundle="i18nExample" />

        <arg                  key="label.name"        bundle="i18nExample" />

        <arg name="minlength" key="name.minlength"    bundle="i18nVariables" />

        <arg name="maxlength" key="name.maxlength"    bundle="i18nVariables" />

        <var resource="true" bundle="i18nVariables">

            <var-name>minlength</var-name>

            <var-value>name.minlength</var-value>

        </var>

        <var resource="true" bundle="i18nVariables">

            <var-name>maxlength</var-name>

            <var-value>name.maxlength</var-value>

        </var>

      </field>

      <field property="zip" depends="required,minlength,maxlength,validwhen">

        <msg name="required" key="msg.required"      bundle="i18nExample" />

        <msg name="minlength" key="msg.zip.minlength" bundle="i18nExample" />

        <msg name="maxlength" key="msg.zip.maxlength" bundle="i18nExample" />

        <msg name="validwhen" key="msg.zip.validwhen" bundle="i18nExample" />

        <arg                  key="label.zip"         bundle="i18nExample" />

        <arg                  key="zip.minlength"     bundle="i18nVariables" />

        <arg name="validwhen" key="zip.maxlength"     bundle="i18nVariables" />

        <var resource="true" bundle="i18nVariables">

            <var-name>minlength</var-name>

            <var-value>zip.minlength</var-value>

        </var>

        <var resource="true" bundle="i18nVariables">

            <var-name>maxlength</var-name>

            <var-value>zip.maxlength</var-value>

        </var>

        <var resource="true" bundle="i18nVariables">

            <var-name>test</var-name>

            <var-value>zip.validwhen</var-value>

        </var>

      </field>

      <field property="phone" depends="required,mask">

        <msg name="required" key="msg.required"      bundle="i18nExample" />

        <msg name="mask"      key="msg.phone"         bundle="i18nExample" />

        <arg                  key="label.phone"       bundle="i18nExample" />

        <arg name="mask"      key="phone.display"     bundle="i18nVariables" />

        <var resource="true" bundle="i18nVariables">

            <var-name>mask</var-name>

            <var-value>phone.regexp</var-value>

        </var>

      </field>

      <field property="dob" depends="required,date">

        <msg name="required" key="msg.required"      bundle="i18nExample"/>

        <msg name="date"      key="msg.date"          bundle="i18nExample"/>

        <arg                  key="label.dob"         bundle="i18nExample" />

        <arg name="date"      key="dob.display"       bundle="i18nVariables"/>

        <var resource="true" bundle="i18nVariables">

            <var-name>datePattern</var-name>

            <var-value>dob.format</var-value>

        </var>

      </field>

      <field property="age" depends="required,integer,intRange">

        <msg name="required" key="msg.required"      bundle="i18nExample"/>

        <msg name="integer"   key="msg.integer"       bundle="i18nExample"/>

        <msg name="intRange" key="msg.range"         bundle="i18nExample"/>

        <arg                  key="label.age"         bundle="i18nExample" />

        <arg name="intRange" key="age.minimum"       bundle="i18nVariables"/>

        <arg name="intRange" key="age.maximum"       bundle="i18nVariables"/>

        <var resource="true" bundle="i18nVariables">

            <var-name>min</var-name>

            <var-value>age.minimum</var-value>

        </var>

        <var resource="true" bundle="i18nVariables">

            <var-name>max</var-name>

            <var-value>age.maximum</var-value>

        </var>

      </field>

      <field property="doe" depends="required,date">

        <msg name="required" key="msg.required"      bundle="i18nExample"/>

        <msg name="date"      key="msg.date"          bundle="i18nExample"/>

        <arg                  key="label.doe"         bundle="i18nExample" />

        <arg name="date"      key="doe.display"       bundle="i18nVariables"/>

        <var resource="true" bundle="i18nVariables">

            <var-name>datePatternStrict</var-name>

            <var-value>doe.format</var-value>

        </var>

      </field>

      <field property="emplno" depends="required,long,longRange">

        <msg name="required" key="msg.required"      bundle="i18nExample"/>

        <msg name="long"      key="msg.long"          bundle="i18nExample"/>

        <msg name="longRange" key="msg.range"         bundle="i18nExample"/>

        <arg                  key="label.emplno"      bundle="i18nExample" />

        <arg name="longRange" key="emplno.minimum"    bundle="i18nVariables"/>

        <arg name="longRange" key="emplno.maximum"    bundle="i18nVariables"/>

        <var resource="true" bundle="i18nVariables">

            <var-name>min</var-name>

            <var-value>emplno.minimum</var-value>

        </var>

        <var resource="true" bundle="i18nVariables">

            <var-name>max</var-name>

            <var-value>emplno.maximum</var-value>

        </var>

      </field>

      <field property="salary" depends="required,long,doubleRange">

        <msg name="required"    key="msg.required"    bundle="i18nExample"/>

        <msg name="long"        key="msg.long"        bundle="i18nExample"/>

        <msg name="doubleRange" key="msg.range"       bundle="i18nExample"/>

        <arg                    key="label.salary"    bundle="i18nExample" />

        <arg name="doubleRange" key="salary.minimum" bundle="i18nVariables"/>

        <arg name="doubleRange" key="salary.maximum" bundle="i18nVariables"/>

        <var resource="true" bundle="i18nVariables">

            <var-name>min</var-name>

            <var-value>salary.minimum</var-value>

        </var>

        <var resource="true" bundle="i18nVariables">

            <var-name>max</var-name>

            <var-value>salary.maximum</var-value>

        </var>

      </field>

      <field property="hours" depends="required,float,floatRange">

        <msg name="required"   key="msg.required"    bundle="i18nExample"/>

        <msg name="float"      key="msg.float"       bundle="i18nExample"/>

        <msg name="floatRange" key="msg.range"       bundle="i18nExample"/>

        <arg                   key="label.hours"     bundle="i18nExample" />

        <arg name="floatRange" key="hours.minimum"   bundle="i18nVariables"/>

        <arg name="floatRange" key="hours.maximum"   bundle="i18nVariables"/>

        <var resource="true" bundle="i18nVariables">

            <var-name>min</var-name>

            <var-value>hours.minimum</var-value>

        </var>

        <var resource="true" bundle="i18nVariables">

            <var-name>max</var-name>

            <var-value>hours.maximum</var-value>

        </var>

      </field>

    </form>

 </formset>

 <!-- ========================= en_GB Formset ========================= -->

 <formset language="en" country="GB">

 

    <form name="i18nForm">

      <!-- Override the "zip" validation - doesn't include "validwhen" -->

      <field property="zip" depends="required,minlength,maxlength">

        <msg name="required" key="msg.required"      bundle="i18nExample" />

        <msg name="minlength" key="msg.zip.minlength" bundle="i18nExample" />

        <msg name="maxlength" key="msg.zip.maxlength" bundle="i18nExample" />

        <arg                  key="label.zip"         bundle="i18nExample" />

        <arg                  key="zip.minlength"     bundle="i18nVariables" />

        <arg                  key="zip.maxlength"     bundle="i18nVariables" />

        <var resource="true" bundle="i18nVariables">

            <var-name>minlength</var-name>

            <var-value>zip.minlength</var-value>

        </var>

        <var resource="true" bundle="i18nVariables">

            <var-name>maxlength</var-name>

            <var-value>zip.maxlength</var-value>

        </var>

      </field>

    </form>

 </formset>

² Form与其他js验证的form类似

l Boudles

² Html Form html:errors比html:messages使用简洁

<tr>

          <td align="right"><b><bean:message key="bundlesForm.label.name" /></b></td>

          <td align="left"><html:text property="name" size="20" maxlength="25" /></td>

          <td align="left"><font color="red"><html:errors property="name" header="empty"/></font>&nbsp;</td>

        </tr>

² Xml验证配置

验证消息直接定义在配置文件中,而不是资源文件中

可以从不同的资源文件取得msg

可以从不同得资源文件取得arg

如果msg定义了资源文件,arg没有定义,则arg从相同资源文件取得

如果arg定义了资源文件,而msg没有定义,则msg从默认资源文件取得

<formset language="fr">

    <form name="bundlesForm">

      <!-- Override the "name" field (non resource message)     -->

      <field property="name" depends="required">

        <msg name="required" key="Vous avez oubli¨¦ le nom." resource="false" />

      </field>

      <!-- Override the "age" field                              -->

      <!-- (Non resource message and different range variables) -->

      <field property="age" depends="required,integer,intRange">

        <arg key="bundlesForm.error.age" bundle="different" />

        <msg name="required" key="bundlesForm.errors.required" />

        <msg name="integer" key="bundlesForm.errors.integer" bundle="other"/>

        <msg name="intRange" key="L'age doit ¨ºtre entre 16 et 55." resource="false" />

        <var>

          <var-name>min</var-name>

          <var-value>16</var-value>

        </var>

        <var>

          <var-name>max</var-name>

          <var-value>55</var-value>

        </var>

      </field>

    </form>

 </formset>

l Js Boudles

² 与上面boudles一致,除html form定义不同

<html:form action="validateJsBundleExamples" onsubmit="return validateBundlesForm(this);">

<html:javascript formName="bundlesForm" dynamicJavascript="true" staticJavascript="true" />

l ValidWhen

² 验证配置

大于小于用&gt;&lt;取代

表达式包在括弧内

And 和 or只能两个变量比较,并用括弧包起来

Validwhen不支持javascript

<formset>

    <form name="validWhenForm">

      <!-- validwhen: simple validation -->

      <field property="lastName" depends="validwhen">

        <arg key="validWhenForm.lastName" />

        <var>

          <var-name>test</var-name>

          <var-value>((firstName == null) or (*this* != null))</var-value>

        </var>

      </field>

      <!-- validwhen: both fields validation -->

      <field property="fieldA" depends="validwhen">

        <msg name="validwhen" key="validWhenForm.error.both" />

        <var>

          <var-name>test</var-name>

          <var-value>( ((fieldB == null) and (*this* == null)) or ((fieldB != null) and (*this* != null)) )</var-value>

        </var>

      </field>

      <!-- validwhen: numeric compare validation -->

      <field property="max" depends="required,integer,validwhen">

        <arg key="validWhenForm.max" />

        <msg name="validwhen" key="validWhenForm.error.numeric" />

        <var>

          <var-name>test</var-name>

          <var-value>(*this* &gt; min)</var-value>

        </var>

      </field>

      <!-- validwhen: address validation -->

      <field property="address1" depends="validwhen">

        <arg key="validWhenForm.address1" />

        <var>

          <var-name>test</var-name>

          <var-value>( (*this* != null) or

                     ( (address2 == null) and

                     ( (city == null) and

                       (zip == null) )))</var-value>

        </var>

      </field>

      <field property="city" depends="validwhen">

        <arg key="validWhenForm.city" />

        <var>

          <var-name>test</var-name>

          <var-value>( (*this* != null) or

                     ( (address1 == null) and

                     ( (address2 == null) and

                       (zip == null) )))</var-value>

        </var>

      </field>

      <field property="zip" depends="validwhen">

        <arg key="validWhenForm.zip" />

        <var>

          <var-name>test</var-name>

          <var-value>( (*this* != null) or

                     ( (address1 == null) and

                     ( (address2 == null) and

                       (city == null) )))</var-value>

        </var>

      </field>

    </form>

 </formset>

posted on 2008-07-16 08:08 MingIsMe 阅读(193) 评论(0)  编辑  收藏 所属分类: 16 案例分析

 
Powered by:
BlogJava
Copyright © MingIsMe