【Struts2】(10)校验

一. 手动输入编码校验

1. 使用addActionError

先创建一个Action继承ActionSupport:
public class ValidatorAction extends ActionSupport {

	private String username;
	private String password;

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String execute() {
		return SUCCESS;
	}

	@Override
	public void validate() {
		if (username == null || "".equals(username.trim())) {
			addActionError("用户名不能为空!");
		}
		if (username.length() < 3 || username.length() > 10) {
			addActionError("用户名长度必须不小于3,不大于10!");
		}
	}
}
覆写其中的validate方法,这个方法就是最主要的用来验证的方法。
里面的addActionError会自动跳入到一个指定result为input的界面。
在struts中配置新的aciton:
		
			/success.jsp
		
这里要注意在全局中添加一个result结果集,用来显示错误界面。
			/error.jsp
最后是我们的jsp测试页面:

	
UserName:
Password:
当点击提交就会进入validate验证方法。

2. 使用addFiledError

修改一下之前的验证方法:
	private boolean isNull(String str) {
		if (str != null && !"".equals(str.trim())) {
			return false;
		}
		return true;
	}

	private boolean validateLength(String str, int minLength, int maxLength) {
		if (!isNull(str)) {
			if (str.length() >= minLength && str.length() <= maxLength) {
				return true;
			}
		}
		return false;
	}

	@Override
	public void validate() {
		if (isNull(username)) {
			// addActionError("用户名不能为空!");
			addFieldError("username", "用户名不能为空");
		}
		if (!validateLength(username, 3, 10)) {
			// addActionError("用户名长度必须不小于3,不大于10!");
			addFieldError("username", "用户名长度必须不小于3,不大于10");
		}
		if (isNull(password)) {
			addFieldError("password", "密码不能为空");
		}
		if (!validateLength(password, 6, 12)) {
			addFieldError("password", "密码长度必须不小于6,不大于12");
		}
	}
同样修改全局的结果集跳转到本身页面:
			/validator.jsp
修改validator.jsp文件:
	
UserName:
Password:
这样,当你在不同的错误下就会根据fieldName配置的内容在本页面上显示不同的错误。

二. 声明式校验

使用声明式校验就不用覆写validate方法了,只需要在Action包内创建一个同名的Actiong+"-validation".xml文件,我们这里新建ValidatorAction-validation.xml,在里面进行配置:




	
		
			
		
		
			3
			10
			用户名长度必须大于${minLength}个字符,小于${maxLength}个字符
		
	
	
		
			
		
		
			[0-9]
			
		
	
标签内的是我们要进行校验的字段,中的type表示我们所使用的校验器是什么,是参数,是表示当出现校验不通过的时候所显示的内容。中的就是需要在另个一配置文件中配置的内容。我们这里再创建一个ValidatorAction.properties:
username.requiredstring=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A
password.requiredstring=\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A
password.regex=\u5BC6\u7801\u592A\u7B80\u5355
里面配置好我们要显示的内容。

你可能感兴趣的:(Struts2,Java,struts2.0,框架)