对表单输入的数据做校验

对表单输入的数据做校验

在struts中带有了Jakarta Commons中的一个叫做Validator的数据校验框架。 使用起来也是非常的简单。

首先将 struts提供的validator-rules.xml的配置文件放入WEB-INF中。

然后在struts-config.xml中加入validation的plugin声明:

<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文件不存在,在WEB-INF中新建这个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"> <form-validation> <formset> <form name="sysuserForm"> <field property="username" depends="required, minlength,maxlength"> <arg0 key="prompt.login"/> <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="userpasword" depends="required, minlength,maxlength"> <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>

仔细的看看这个xml文件的内容就会发现它说明要校验的表单名为sysuserForm, 并对这个表单中的几个需要做校验的字段一一做了校验方法说明。 具体Validator的使用请参考它带的相关文档和struts的相关说明。

注 意:如果使用默认的检查规则对表单进行检查的话需要注意几个关键的地方,否则你可能就会花很长的时间检查js脚本无法应用的原因。 首先您所使用的FormBean就不能是原来的ActionForm了,需要更改为ValidatorForm。 这个Form中还必须有一个类似这样的validate方法:

public ActionErrors validate( ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = super.validate(mapping, request); return errors; }

其次需要在页面的结尾处声明使用javascript:

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

dynamicJavascript 属性是代表是否在页面内生成动态的js脚本。 如果您要对表单进行合法性检查的话,此属性必须为true。 staticJavascript属性代表是否在页面内生成静态js脚本。 如果您设为true,则存放在validator-rules.xml文件中的规则检查js 都将填充到本页面内。这样做的效果不是很好,因为会使页面变得很大, 并且消耗大量的额外资源。通常的做法是将此选项设置成false, 将validator-rules.xml中的js填充到一个指定的jsp页面中去。 这样多个表单都可以同时使用一个静态页面,从而节省大量的资源。 如果这样做我们就需要在后 面在声明对这个静态页面进行引用。

<script language="Javascript1.1" src="../staticJavascript.jsp"/></script>

书写这句话的时候也需要注意一点,尽量使用相对路径较好。 使用绝对路径的时候很难准确的定位这个静态页面的位置。

最后需要注意的一点就是在引用这个js检查的时候。

<html:form action="/sysuser.do" method="post" focus="login" οnsubmit="return validateSysuserForm(this);">

return validateSysuserForm(this);这个函数的名字是根据你所检查的表单的名字而改变的。 例如我们检查的这个表单叫做sysuserForm,则生成的检查函数的名字为validateSysuserForm。 您在使用的时候需要将其修改成跟您所需要检查的表单相对应的函数名,否则js的检查就形同虚设了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值