struts2校验器学习笔记

作者在 2010-07-30 19:52:23 发布以下内容
struts2框架校验的两种方式:
一:编码式校验,自己编写校验判断,也叫field校验
1.在Action类中重写validate()方法,编写自己的校验判断语句,然后调用addFieldError方法返回错误提示信息,如
EnrollAction.java类
private String username;
private String password;
getter/setter()
@Override
public void validate(){
 if(getUsername()== null || getUsername().equals("")){
  this.addFieldError("username", "用户名不能为空!");
 }else if(getPassword()== null || getPassword().equals("")){
  this.addFieldError("password", "密码不能为空!");
 }  
}
public String execute(){
 return SUCCESS;
}
2.配置这个Action
struts.xml
 <action name="enroll" class="com.action.EnrollAction">
   <result>/success.jsp</result>
   <result name="input">/enroll.jsp</result>
  </action>
注:这里必须配置input这个返回值!!
3.在页面中使用struts2标签库
enroll.jsp
<%@ page language="java"  pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
  <head>   
    <title>登录</title> 
  </head> 
  <body>
    <center>  
     <s:form action="enroll.action" method="post">
      <s:textfield name="username" label="用户名"></s:textfield>
      <s:password name="password" label="密码"></s:password>
      <s:submit value="登录"></s:submit>
     </s:form>
    </center>
  </body>
</html>
注:这里你也可以在<body>中的任意地方加一个<s:fielderror></s:fielderror>用于在这个位置显示错误信息
二:声明式校验,也叫配置校验,就是为Action添加一个配置文件用于校验。如:
1.Action类:EnrollAction.java里面重写的校验方法可以去掉了。JSP页面还是用上面的。
2.在与EnrollAction.java类同一目录下添加一个EnrollAction-validate.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="username">
<field-validator type="requiredstring">
<message>用户名不能为空</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<message>密码不能为空</message>
</field-validator>
</field>
</validators>
可以看到效果跟前面是一样的。很显然,这里每一个field标签就对应jsp页面中的一个字段,所以这里可以设置对每一个字段校验!其中的type类型有多种,都是struts2提供的,如下:
required:必填校验器
requiredstring:必填字符串校验器
int:整数校验器
double:双精度浮点数校验器
date:日期校验器
expression:表达式校验器
fieldexpression:字段表达式校验器
email:电子邮件校验器
url:网址校验器
visitor:Visitor校验器
conversion:转换校验器
stringlength:字符串长度校验器
regex:正则表达式校验器
这里只用了一个:必填校验器,所以type="requiredstring",对于其他字段可以用其他 的,如密码必须要6到12位,就可以用stringlength,如:
  <field name="password">
     <field-validator type="requiredstring">
       <param name="trim">true</param>
       <message>密码不能为空</message>
     </field-validator>   
     <field-validator type="stringlength">
       <param name="minLength">6</param>
       <param name="maxLength">12</param>
       <message>password should be between
 ${minLength} and ${maxLength}!</message>
     </field-validator>
   </field>
${minLength}用到了ognl表达式,如果不想用直接写出提示信息就可以了.如:
<message>密码必须6---12位之间</message>
常用的还有重复密码的校验:
< field name=" pass2" >
< field-validator type=" requiredstring" >
< message> 必须重复输入密码< /message>
< /field-validator>
< !-- 校验重复输入密码格式 -->
< field-validator type=" regex" >
< param name=" expression" >
< ![CDATA[(\w{ 6,15} )]]>
< /param>
< message> 密码必须是字母和数字的组合且长度在(6-15)范围内< /message>
< /field-validator>
< !-- 校验两次输入密码的一致性 -->
< field-validator type=" fieldexpression" >
< param name=" expression" >
< ![CDATA[(pass2.equals(pass1))]]>
< /param>
< message> 两次输入密码不符< /message>
< /field-validator>
< /field>
其他的校验器用法大致相同的,用的时候可以百度一下。
个人日记 | 阅读 1197 次
文章评论,共0条
游客请输入验证码
最新评论