struts2 手工编写代码对action的方法进行输入校验
手工编写代码实现对action中所有方法的输入校验
?
通过重写validate()方法实现,validate()方法会校验action中所有与execute方法签名相同的方法。当某个数据校验失败时,我们应该调用addFiledError()方法往系统的filedErrors添加校验失败信息(为了使用addFiled()方法,action可以继承ActionSupport),如果系统的filedErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:filederror/>显示失败信息。
?
??? index.jsp
??? 其中:<s:fielderror></s:fielderror>显示错误的提示信息
?
package com.siln.action;import java.util.regex.Pattern;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;@SuppressWarnings("serial")public class PersonAction extends ActionSupport{ private String username;private String mobile;public String update() {ActionContext.getContext().put("message", "更新成功");return "success";}public String save() {ActionContext.getContext().put("message", "保存成功");return "success";}public void validateSave() { //对action中save()进行校验if(this.username == null || "".equals(this.username)) {this.addFieldError("username", "用户名不能为空");}if(this.mobile == null || "".equals(this.mobile)) {this.addFieldError("mobile", "手机号不能为空");}else {if(!Pattern.compile("^1[358]\\d{9}").matcher(this.mobile).matches()) {this.addFieldError("mobile", "手机号格式错误");}}}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getMobile() {return mobile;}public void setMobile(String mobile) {this.mobile = mobile;}}?