...
<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.ActionErrors,
javax.servlet.http.HttpServletRequest"
msg="errors.required">
<javascript><![CDATA[
function validateRequired(form) {
........
}
]]>
</javascript>
</validator>
....
<html:form action="Login" onsubmit="return validateLoginForm(this);">然后在JSP页面中使用<html:javascript/>标签将所需的JavaScript写出:
<html:javascript formName="loginForm"/><javascript>会自动生成JavaScript validateXXXX()方法,其中XXXX是ActionForm名称,在客户端当按下按钮时,validateXXXX()方法会被呼叫并执行客户端的JavaScript验证工作。
public class MyValidator implements Serializable { public static boolean validateSomeProperty( Object object, ValidatorAction action, Field field, ActionErrors errors, HttpServletRequest request) { ........ } }
如果验证失败,errors可以让您将一些验证失败讯息加入其中,最后可使用<html:messages>显示在指定的页面上。
自订Validator时,预设都是找寻application.properties中的key-value对应,如果需要额外的讯息,可以在该档案中加入。
有关更多自订验证器的方式,可以参考validator-rules.xml与Validator的原始码档案。