Struts2中常见的输入效验有一下三种
- 使用Javascript完成客户端效验
使用Javascript客户端需要编写Javascript 并且需要浏览器支持
function check(form){
with(form){
if(username.value == ""){
alert("用户名不能为空!");
return false;
}
if(password.value == ""){
alert("密码不能为空");
return false;
}
return true;
}
}
</script>
并要在表单中这样引用
<form class="form-signin" method="post" onsubmit="return check(this);"action="Login">
- 使用Validate方法进行输入效验
在action类中重写validate()方法,即可在该方法中完成输入效验,如:
@Override public void validate(){
if(username.length()==0){
addFieldError("username","yonghukong");
}
if(pass.trim().length()==0){
addFieldError("pass","没有输入值");
}else if(pass.trim().length()<3){
addFieldError("pass","长度不符合要求");
}
}
- 使用Struts2框架的输入效验
框架效验需要xml文件,若action的类名为CheckLogin,则该文件为CheckLogin-validation.xml,并且要与对应action位于同一目录下
1.使用字段效验的输入效验
一个完完整的效应配置文件
<!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="stringlength">
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>用户名长度必须在${minLength}与${maxLength}之间</message>
</field-validator>
<field-validator type="requiredstring">
<message>用户名不能为空</message>
</field-validator>
</field>
<field name="password">
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>密码长度必须在${minLength}与${maxLength}之间</message>
</field-validator>
<field-validator type="requiredstring">
<message>密码不能为空</message>
</field-validator>
</field>
</validators>
2.非字段效验
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<validator type="stringlength">
<param name="fieldName">username</param>
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>用户名长度必须在${minLength}与${maxLength}之间</message>
</validator>
<validator type="stringlength">
<param name="fieldName">password</param>
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>密码长度必须在${minLength}与${maxLength}之间</message>
</validator>
</validators>
3.效验器的短路
一个效验器设置short-circuit=”true” 如果这个校验器不通过,本字段后边的校验器不再运行
非字段校验器的优先级高于字段校验器,非字段校验器按照定义的顺序首先运行,然后字段校验器按照定义的顺序运行。
非字段校验不通过,后边所有字段的校验器都不会运行