开题:
为了让大家对以下本人所诉有点头绪,现假设Struts配置文件中定义了一个名为 theForm 的 from bean (当然,其继承自 ValidatorForm ),我们将要在theWebPage.jsp 提交前对其名为 theField 的字段进行 required 验证。
配置:
Struts-config.xml 配置文件的部分内容:
<form-bean name="theForm"
type="edgen.action.TheForm"/>
type="edgen.action.TheForm"/>
validator-rules.xml 配置文件的部分内容:
<validator name="required"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
msg="errors.required"/>
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
msg="errors.required"/>
validation.xml 配置文件的部分内容:
<form name="theForm">
<field property="theField"
depends="required">
<arg key="theForm.theField.displayname"
position="0" />
</field>
<field property="theField"
depends="required">
<arg key="theForm.theField.displayname"
position="0" />
</field>
theWebPage.jsp 服务端的源文件的部分内容:
<html:form action="theAction.do" οnsubmit="return validateTheForm(this);">
...
...
<html:cancel οnclick="bCancel=true;">取消</html:cancel>
...
...
<html:javascript formName="theForm"/>
application.properties 文件的部分内容:
errors.required={0} is required.
...
...
theForm.theField.displayname= The Field
分析:
查看 theWebPage.jsp 的客户端页面的源文件会发现:
var bCancel = false;
function validateTheForm(form)
{
if (bCancel)
if (bCancel)
{
return true;
}
return true;
}
else
{
var formValidationResult;
formValidationResult = validateRequired(form);
return (formValidationResult);
}
}
var formValidationResult;
formValidationResult = validateRequired(form);
return (formValidationResult);
}
}
注意到了 function validateTheForm(form) 的签名了吗? 对了, theWebPage.jsp 中的 form 的 onsubmit 事件触发的就是这这个方法,重要的是这个函数的 form 参数就是 Html 表单标签对应的 BOM 对象。
接下来更有意思...
function theForm_required ()
{
this.a0 = new Array("theField", "The Field is required.", new Function ("varName", " return this[varName];"));
this.a0 = new Array("theField", "The Field is required.", new Function ("varName", " return this[varName];"));
}
有没有发现这是一个类(可能有的同志会把它只当成一个函数,有点乱了,函数在javascript中也是类),而且它的域是数组,数组的内容的第一个元素就是字段名,第二个元素就是已经格式化了的提示信息,第三个元素就是处理验证其对应的变量的实用类。
待续...
转载于:https://blog.51cto.com/edgenhuang/23718