Struts2学习日志(4) validate验证数据

来源:互联网 发布:网络与信息安全责任书 编辑:程序博客网 时间:2024/06/06 20:54

一、 使用validate方法验证

ActionSupport类已经实现了Validateable接口,空实现了validate()方法,struts会在执行execute()前先执行validate(),编写时只要覆写validate()方法即可。

1. 页面中若要显示验证信息,有三个标签可以使用

  • <s:actionerror /> 动作错误信息
  • <s:fielderror  key="..." /> 字段错误信息,此错误需要有一个key
  • <s:actionmessage /> 动作信息
2. Action类直接覆写ActionSupport父类的validate()方法
public void validate() {if (!msg.equalsIgnoreCase("hello")) {this.addFieldError("key", "必须输入hello!");this.addActionError("处理动作失败!");} else {this.addActionMessage("提交成功!");}}
三个addXXX()方法对应上面三个标签可能输出的信息。

3. 页面编写
<s:actionerror/><s:actionmessage/><s:form action="validate.action" theme="simple">输入内容:<s:textfield name="msg"/><s:fielderror key="msg.hello"/><br/><s:submit/></s:form>


二、使用Validation框架验证数据
1. 编写验证规则配置文件,此文件必须放在Action.class同一目录下
命名规则:<ActionClassName>-validation.xml 或 <ActionClassName>-<ActionAliasName>-validation.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN""http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"><validators><field name="msg"><field-validator type="requiredstring"><message>请输入信息</message></field-validator></field><field name="age"><field-validator type="int"><param name="min">13</param><param name="max">20</param><message>必须在13至20之间</message></field-validator></field></validators>
2. Actoin类不需要再覆写validate()方法

3. 页面编写:
<s:form action="new_validate" ><s:textfield name="msg" label="姓名"/><s:textfield name="age" label="年龄"/><s:submit/></s:form>

4. 验证嵌套属性
1)Action中添加User属性,需要验证User下的name和age
private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}
2) User.java
public class User {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

3)validation.xml中添加对象user
<field name="user"><field-validator type="visitor"><param name="context">abc</param><param name="appendPrefix">true</param><message>User:</message></field-validator></field>

4)在User.java同一目录下添加<对象名>-<context名>-validation.xml即 User-abc-validation.xml
<validators><field name="name"><field-validator type="requiredstring"><message>请输入name</message></field-validator></field><field name="age"><field-validator type="int"><param name="min">5</param><param name="max">20</param><message>必须在5到20之间</message></field-validator></field></validators>

5. 页面添加如下:
<s:form action="new_validate" ><s:textfield name="msg" label="姓名"/><s:textfield name="age" label="年龄"/><s:textfield name="user.name" label="姓名1"/><s:textfield name="user.age" label="年龄1"/><s:submit/></s:form>
加了前缀的user.name和user.age正是需要验证的嵌套了的两个属性。