* 加入国际化配置在struts-config.xml文件中,如:
<message-resources parameter="MessageResources" />
* 提供国际化资源文件
* 引入validator插件在struts-config.xml文件中,如:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
* 提供validation.xml和validator_rules.xml文件,将此文件拷贝到WEB-INF下
自己的ActionForm应该是DynaValidatorForm
public class LoginAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
DynaValidatorForm loginForm = (DynaValidatorForm)form;
String username = (String)loginForm.get("username");
String password = (String)loginForm.get("password");
return mapping.findForward("success");
}
}
2、validator服务器端验证
* 配置validation.xml文件
3、validator客户端验证(javascript)
* 配置validation.xml文件
* 在jsp页面中包含< html:javascript>
如:<html:javascript formName="loginForm"/>
* 对需要验证的表单定义onsubmit事件,其中事件名称为validate+ActionForm的名称,如:validateLoginForm
说明,使用验证框架是和国际化绑在一起的
Validator框架不能用于验证标准的org.apache.struts.action.ActionForm类。如果要使用Validator框架应该采用ActionForm类的两个子类:DynavalidatorForm和ValidatorForm。
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"/>这个msg即是说当没有验证通过时,要输出的在国际化资源文件中的key
validation.xml文件类似如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0.1//EN"
- "validator_1_0_1.dtd" >
- <!-- 检验规则文件的根元素 -->
- <form-validation>
- <!-- 所需要校验的form都放在formset元素里面 -->
- <formset>
- <!-- 定义需要校验的表单,此处的name必须与struts-config.xml中定义的FormBean的名字一致 -->
- <form name="loginActionForm">
- <!-- 每个field元素定义一个表单域,即要验证的字段;必须满足怎样的规则 -->
- <field property="username" depends="required">
- <!-- field:要验证的字段,即属性,depends:依赖的验证规则 -->
- <arg0 key="loginActionForm.login" />
- <!-- arg0:在资源包中配置错误消息的{0}参数值 -->
- </field>
- <field property="password" depends="required,minlength">
- <!-- 多个验证规则用逗号分割 -->
- <arg0 key="loginActionForm.password" />
- <arg1 name="minlength" key="#{var:minlength}" resource="false" />
- <!-- resource:false该key的值不在资源包中给出,而是在本文件给 -->
- <var>
- <!-- 定义变量,给上面的key所用 -->
- <var-name>minlength</var-name>
- <var-value>5</var-value>
- </var>
- </field>
- </form>
- </formset>
- </form-validation>
资源文件类似如下:
- # -- standard errors --
- username=username
- password=password
- login=submit
- noname=please enter name
- nopassword=please enter password
- # Struts Validator Error Messages
- errors.required={0} is required.
- errors.minlength={0} can not be less than {1} characters.
- errors.maxlength={0} can not be greater than {1} characters.
- errors.invalid={0} is invalid.
- errors.byte={0} must be a byte.
- errors.short={0} must be a short.
- errors.integer={0} must be an integer.
- errors.long={0} must be a long.
- errors.float={0} must be a float.
- errors.double={0} must be a double.
- errors.date={0} is not a date.
- errors.range={0} is not in the range {1} through {2}.
- errors.creditcard={0} is an invalid credit card number.
- errors.email={0} is an invalid e-mail address.
- #loginForm
- loginActionForm.login=username