首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

DynaValidatorForm种

2012-10-27 
DynaValidatorForm类同时要定义验证的插件:plug-in classNameorg.apache.struts.validator.ValidatorPl

DynaValidatorForm类

同时要定义验证的插件:

  <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames"   value="/WEB-INF/validator-rules.xml,   /WEB-INF/validation.xml"/>  </plug-in>

其中的validator.xml和validator-rules.xml分别表示验证定义和验证规则的内容(可以合并在一起),比如针对上例中的DynaValidatorForm,我们有如下验证定义(validator.xml):

<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE form-validation PUBLIC  "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"  "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd"><!--    Validation Rules    $Id: validation.xml--><form-validation>  <!-- ========== Default Language Form Definitions ===================== --><formset>   <form name="loginForm">       <field property="username" depends="required, minlength,maxlength">    <arg0   key="prompt.username"/>             <arg1   key="${var:minlength}" name="minlength" resource="false"/>          <arg2   key="${var:maxlength}" name="maxlength" resource="false"/>                 <var>                    <var-name>maxlength</var-name>        <var-value>16</var-value>            </var>             <var>          <var-name>minlength</var-name>         <var-value>3</var-value>            </var>         </field>       <field property="password" depends="required, minlength,maxlength" bundle="alternate">             <arg0   key="prompt.password"/>      <arg1   key="${var:minlength}" name="minlength" resource="false"/>             <arg2   key="${var:maxlength}" name="maxlength" resource="false"/>     <var>                  <var-name>maxlength</var-name>         <var-value>16</var-value>           </var>             <var>          <var-name>minlength</var-name>     <var-value>3</var-value>          </var>          </field>     </form>   </formset></form-validation>

从上述定义中,我们可以看到对于字段username有三项验证:required, minlength,maxlength,意思是该字段不能为空,而且长度在3和16之间。而validator-rules.xml文件则可以采用Struts提供的缺省文件。注意在<form-bean>中定义的form是如何与validation.xml中的form关联起来的。最后,要启动自动验证功能,还需要将Action配置的validate属性设置为true。

<action path="/login"  type="com.ncu.test.LoginAction"name="loginForm"          scope="request"         input="tile.userLogin"validate="true">

此时,Struts将根据xml配置文件中的定义来检验表单输入,并将不符合要求的错误信息输出到页面。但是你可能会想:这个功能虽然好,可是什么检验都跑到服务器端执行,效率方面和用户易用性方面是不是有些问题?你可能会怀念起那简单的JavaScript客户端验证。

不用担心,在Struts 1.1中也支持JavaScript客户端验证。如果你选择了客户端验证,当某个表单被提交以后,Struts1.1启动客户端验证,如果浏览器不支持JavaScript验证,则服务器端验证被启动,这种双重验证机制能够最大限度地满足各种开发者的需要。JavaScript验证代码也是在validator-rules.xml文件中定义的。要启动客户端验证,你必须在相应的JSP文件中做如下设置:

    为<html:form>增加onsubmit属性 设置Javascript支持

?

下表中列出了一JSP文件的示例代码,红字部分为Javascript验证所需代码。

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %><table bgcolor="#9AFF9A" cellspacing="0" cellpadding="10" border="1" width="100%"> <tr> <td>  <table cellspacing="0" cellpadding="0" border="0" width="100%">  <tr bgcolor="#696969">   <td align="center">       <font color="#FFFFFF">Panel 3: Profile</font>    </td>  </tr>  <tr>    <td><br>   <html:errors/>    <html:form action="/login.do" focus="username"  onsubmit="return validateLoginForm(this);">    <html:hidden property="actionClass"/>     <center>        <table>         <tr>           <td>UserName:</td>      <td><html:text property="username" size="20"/></td>    </tr>    <tr>     <td>Password:</td>      <td><html:password property="password" size="20"/></td>       </tr>     <tr>     <td colspan=2><html:submit property="submitProperty" value="Submit"/></td>       </table>     </center>    </html:form>   <html:javascript formName="loginForm" dynamicJavascript="true" staticJavascript="false"/>    <script language="Javascript1.1" src="staticJavascript.jsp"></script>   </td>  </tr>  </table> </td> </tr></table>

其中onsubmit的值为"return validateLoginForm(this);",它的语法为:

return validate + struts-config.xml中定义的form-bean名称 + (this);

staticJavascript.jsp的内容为:

<%@ page language="java" %><%-- set document type to Javascript (addresses a bug in Netscape according to a web resource --%><%@ page contentType="application/x-javascript" %><%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %><html:javascript dynamicJavascript="false" staticJavascript="true"/>

热点排行