struts2手动效验方法

来源:互联网 发布:科讯cms教程 编辑:程序博客网 时间:2024/06/12 01:47
第一步:继承ActionSupport,覆盖他的validate()方法,validate会效验action里面所有的方法
当效验失败时,我们应该调用addFieldError()方法往系统的fieldErrors
里面添加失败信息
Struts2会将请求转发到名为input的Result,在试图上可以通过<s:fielderror/>显示错误信息

案例代码(这是一个对name跟phone效验的例子)

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@taglib  uri="/struts-tags" prefix="s"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  
  </head>
  
  <body>
  <!-- 错误效验 -->
 <s:fielderror></s:fielderror>
    <form action="${pageContext.request.contextPath }/in_reg.action" method="post">&nbsp; 
     <input type="text" name="username"/>不能为空<br/>
     <input type="text" name="userphone"/>正确手机号码格式<br/>
     <input type="submit" value="注册"/>
    </form>
  </body>
</html>


action继承ActionSupport并且覆盖validate方法
package com.action;

import java.util.regex.Pattern;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport{
private String username;
private String userphone;
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserphone() {
return userphone;
}
public void setUserphone(String userphone) {
this.userphone = userphone;
}
public String reg(){
this.message="注册成功";
return "success";
}
public String login(){
this.message="登录成功";
return "success";
}
@Override
public void validate() {//这是对action里面所有的方法进行效验,如果要对某个指定的方法进行效验,如reg()这个方法,那只需在validate后面加上方法名,首字母大写
//如validateReg()
if(this.username==null||"".equals(this.username.trim())){
this.addFieldError("username", "用户名不能为空!");
}
if(this.userphone==null||"".equals(this.userphone.trim())){
this.addFieldError("userphone", "手机号码不能为空");
}else{
if(!Pattern.compile("^1[358]\\d{9}$").matcher(this.userphone.trim()).matches()){
this.addFieldError("userphone", "手机号码格式不正确!");
}
}
}
}

struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.action.extension" value="do,action,in"></constant>
   <package name="it" namespace="/" extends="struts-default">
   <action name="in_*" class="com.action.UserAction" method="{1}">
   <result name="success">/message.jsp</result>
   <result name="input">/index.jsp</result>
   </action>
   </package>
</struts>    

message.jsp
 <body>
   ${message }
  </body>
原创粉丝点击