• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
zziy的java笔记
博客园    首页    新随笔    联系   管理    订阅  订阅
struts2视频学习笔记 19-20(手工编写代码实现所有方法和指定方法校验)

课时19

  • 对Action中所有方法进行输入校验

  1.手工编写代码实现对action中所有方法输入校验

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

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE struts PUBLIC  
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
    "http://struts.apache.org/dtds/struts-2.3.dtd">



<struts>

    <package name="struts2" namespace="/test" extends="struts-default">
    
        <action name="list_*" class="tutorial.Person" method="{1}">
            <result name="message">/page.jsp</result>
            <result name="input">/index.jsp</result>
        </action>
    </package>
</struts>  

 

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %> <!-- struts2标签 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>校验</title>
</head>
<body>
    <s:fielderror/>
    <form action="<%=request.getContextPath() %>/test/list_save" method="post">
        用户名:<input type="text" name="username" />不能为空<br>
        手机:<input type="text" name="phone" />不能为空,并符合手机号格式<br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

 

page.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${message }
</body>
</html>

 

Person.java

正则表达式

JAVA正则表达式:Pattern类与Matcher类详解

package tutorial;

import java.util.regex.Pattern;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

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

    }
}

课时20   2.手工编写代码实现对action指定方法输入校验

    通过validateXxx()方法实现, validateXxx()只会校验action中方法名为Xxx的方法。其中Xxx的第一个字母要大写。当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport ),如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息。
    eg:public void validateUpdate()

 

posted on 2015-10-22 15:53  zziy  阅读(161)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3