strut2输入校验框架的一个例子

来源:互联网 发布:刺客信条叛变优化补丁 编辑:程序博客网 时间:2024/05/22 21:15

struts2输入校验有2中方法。校验方式有2中:对所有方法校验,对某个方法校验

1.采用手工编写代码实现。

2.基于XML配置方式实现。

·采用手工编写代码校验Action中的所有方法

这种方式需要在Action类中重写validate()方法,validate()方法会校验action中所有与execute方法签名相同的方法。当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport),如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为”input“的result。在input视图中可以通过<s:fielderror/>显示失败信息。

例如:

index.jsp页面

 <body>
   <s:fielderror/>
    <form action="${pageContext.request.contextPath}/hello/test/user_update.action" method="post">
      用户名:<input type="text" name="username"/>不能为空<br/>
      手机号:<input type="text" name="phone"/>不能为空,并且要符合手机号的格式1,3,5,8,后面是9个数字<br/>
      <input type="submit" value="提交"/>
    </form>
 </body>

Action类

public class Person extends ActionSupport{

 private String username;
 private String phone;

 省略get,set方法
 public String update(){
  ActionContext.getContext().put("message", "更新成功");
  return "message";
 }
 
 public String save(){
  ActionContext.getContext().put("message", "保存成功");
  return "message";
 }
 
 @Override
 public void validate() { //validate方法会对action中的所有方法进行校验
  if(username==null||"".equals(username.trim())){
   this.addFieldError("username", "用户名不能为空");
  }
  if(phone==null||"".equals(phone.trim())){
   this.addFieldError("phone", "手机号不能为空");
  }else{
   if(!Pattern.compile("^1[358]\\d{9}$").matcher(this.phone).matches()){
    this.addFieldError("phone", "手机号格式不正确");
   }
  }
 }
}

struts.xml文件配置

<package name="hello" extends="struts-default" namespace="/hello/test">
  <action name="user_*" class="com.amaker.Person.Person" method="{1}">
   <result name="message">/WEB-INF/page/message.jsp</result>
   <result name="input">/index.jsp</result>
  </action>
</package>

message.jsp页面 ${message}

·采用手工编写代码校验Action中的某个方法

这个上上面的校验十分相似,唯一不同的地方是:方法名比如我们要对update方法校验,方法名是validateUpdate(){...} ,注意方法名的首字母需要大写。代码同上一样。只是方法名字稍微改变一下。

 

·基于XML配置方式实现校验Action中的所有方法

例如:

struts.xml文件,jsp页面,都没变化同时所示

验证xml文件,此文件名字格式是:action类名+validation.xml

<validators>
 <field name="username">
  <field-validator type="requiredstring">
   <param name="trim">true</param>
   <message>用户名不能为空</message>
  </field-validator>
 </field>
</validators>
action类

public class PersonAction extends ActionSupport{

 private String username;
 private String phone;
 省略了 get  set,并且采用xml格式验证,此处不能有validate方法了
 public String update(){
  ActionContext.getContext().put("message", "更新成功");
  return "message";
 }
 
 public String save(){
  ActionContext.getContext().put("message", "保存成功");
  return "message";
 }

}

原创粉丝点击