【Struts2】(10)校验

10 篇文章 0 订阅

一. 手动输入编码校验

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:
		<action name="validator" class="com.thr.struts2.action.ValidatorAction">
			<result>/success.jsp</result>
		</action>
这里要注意在全局中添加一个result结果集,用来显示错误界面。
			<result name="input">/error.jsp</result>
最后是我们的jsp测试页面:
<body>
	<form action="/web/test/validator.action" method="post">
		UserName:<input name="username" /><br />
		Password:<input name="password" type="password" /><br /> 
		<input type="submit" value="提交" />
	</form>
</body>
当点击提交就会进入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");
		}
	}
同样修改全局的结果集跳转到本身页面:
			<result name="input">/validator.jsp</result>
修改validator.jsp文件:
	<form action="/web/test/validator.action" method="post">
		UserName:<input name="username" /><s:fielderror fieldName="username"/><br />
		Password:<input name="password" type="password" /><s:fielderror fieldName="password"/><br /> 
		<input type="submit" value="提交" />
	</form>
这样,当你在不同的错误下就会根据fieldName配置的内容在本页面上显示不同的错误。

二. 声明式校验

使用声明式校验就不用覆写validate方法了,只需要在Action包内创建一个同名的Actiong+"-validation".xml文件,我们这里新建ValidatorAction-validation.xml,在里面进行配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.2//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">

<validators>
	<field name="username">
		<field-validator type="requiredstring">
			<message key="username.requiredstring" />
		</field-validator>
		<field-validator type="stringlength">
			<param name="minLength">3</param>
			<param name="maxLength">10</param>
			<message>用户名长度必须大于${minLength}个字符,小于${maxLength}个字符</message>
		</field-validator>
	</field>
	<field name="password">
		<field-validator type="requiredstring">
			<message key="password.requiredstring" />
		</field-validator>
		<field-validator type="regex">
			<param name="regexExpression">[0-9]</param>
			<message key="password.regex" />
		</field-validator>
	</field>
</validators>
<filed>标签内的是我们要进行校验的字段,<field-validator>中的type表示我们所使用的校验器是什么,<param>是参数,<message>是表示当出现校验不通过的时候所显示的内容。<message>中的<key>就是需要在另个一配置文件中配置的内容。我们这里再创建一个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
里面配置好我们要显示的内容。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值