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

一、 使用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正是需要验证的嵌套了的两个属性。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值