一。struts2验证器的工作流程:
有关struts给我们提供的默认验证器可参考:http://blog.csdn.net/yongjian1092/article/details/7349606
二。用一个例子说明验证器的使用方法:
程序包图:
1.hello.jsp:程序入口
<body> <s:form action="helloa" method="post"> <s:textfield name="obj.user" label="姓名"></s:textfield> <s:password name="obj.password" label="密码"></s:password> <s:submit value="提交"></s:submit> </s:form> </body>
2.TestAction-invalidation.xml(起名方式是Class类名-invalidation.xml)
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd"> <validators> <field name="obj.user"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>必须输入用户名</message> </field-validator> </field> <field name="obj.password"> <field-validator type="requiredstring"> <param name="min">6</param> <param name="min">10</param> <message>必须在长度是6~10之间</message> </field-validator> </field> </validators>该文件必须和TestAction放在同一个目录下面,要万分注意!如有不明白请看上图。
2.创建struts.xml
<constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="helloa" class="Action.TestAction"> <result>/success.jsp</result> <result name="input">/Hello.jsp</result> <!--输入如果错误,Action会返回一个input给Struts.xml,他的意思是你还需要返回“输入”这个状态,此时验证器里面配置的提示信息就会出现!--> </action> </package>
2)如果需输入错误,我们的验证器就起作用了
三。在struts2框架下,自定义验证器很容易。
1. 先创建一个类,用来写自定义的验证方法。下面是我写的MyValidate类
public class MyValidate extends FieldValidatorSupport{ public void validate(Object obj) throws ValidationException { // TODO Auto-generated method stub String name = super.getFieldName(); String value = super.getFieldValue(name, obj).toString(); System.out.println(name);System.out.println(value); super.addFieldError(super.getFieldName(), obj); } }
它继承FieldValidatorSupport类,重写validate()方法,验证规则就写在validate()方法里面。解释下里面关键的几点。super.getFieldName();获取xml验证中的需要验证的字段名。super.getFieldValue(name, obj).toString();获取表单提交的该字段的值。super.addFieldError(super.getFieldName(), obj);添加错误信息。运行下你就可以看到控制台打印出来的结果。
以上问题若有不明白的地方,请联系。