课时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
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()
浙公网安备 33010602011771号