struts的validate javascript

来源:百度知道 编辑:UC知道 时间:2024/06/22 19:16:53
我用struts进行数据验证,有两项,一个是登录名,一个是密码,使其自动填充js的前端验证,登录名是手机号码,密码是六位。结果在测试的时候发现,当有任何一项为空时可以进行提示,手机号码位数不够时也可提示(前端),但密码不够六位时便直接跳到后台验证。想不通,看页面源码时里面有六位验证,就是没用
validation.xml中的配置
<form-validation>
<formset>
<form name="loginForm">
<field property="username" depends="required,mask">
<arg key="jsp.login.username"/>
<var>
<var-name>mask</var-name>
<var-value>^1[3,5]\d{9}$</var-value>
</var>
<msg name="mask" key="login.username.mustbeMobilePhoneNum"/>
</field>

<field property="password" depends="required,mask">
<arg key="jsp.login.password"/>
<var>
<var-na

不知你的是怎么写的,我的这样写是可以的。
<field property="password" depends="required,minlength">
<arg key="loginForm.password"/>
<arg key="${var:minlength}" resource="false" position="1"/>
<var>
<var-name>minlength</var-name>
<var-value>6</var-value>
</var>
</field>

终于找到答案了:
在commons-validator.jar包中包含的javascript中关于mask有这么一段:

var field = form[oMasked[x][0]];

if ((field.type == 'hidden' ||
field.type == 'text' ||
field.type == 'textarea' ||
field.type == 'file') &&
(field.value.length > 0) &&
field.disabled == false) {

if (!matchPattern(field.value, oMasked[x][2]("mask"))) {
.......
通过field.type中可以看出对于javascript客户端验证mask对<html:password .../>不起作用,而只对上面的几种输入类型有效,但是服务端验证有效。

你可以修改一下valid