您的位置:首页 > 编程语言 > Java开发

【Struts2】(10)校验

2015-12-17 16:56 423 查看

一. 手动输入编码校验

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
里面配置好我们要显示的内容。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: