Struts2默认验证器、自定义验证器

一。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>
这里需要注意的是,我用一个obj实例来封装了User类里面的user和password属性,所以表单里要用obj.user来取值。

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>
1)表单提交属性的时候由helloa这个Action来完成动作跳转,执行后返回SUCCESS字符串。这是正常情况

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);添加错误信息。运行下你就可以看到控制台打印出来的结果。


以上问题若有不明白的地方,请联系。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值