0
点赞
收藏
分享

微信扫一扫

手工编写代码实现对action指定方法输入校验

陌岛 2023-04-27 阅读 92


知识点:

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

validateXxx()方法使用例子:

public String add() throws Exception{ return "success";} 

public void validateAdd(){ 

 if(username==null && "".equals(username.trim())) this.addFieldError("username", "用户名不能为空"); 

}



验证失败后,请求转发至input视图:

<result name="input">/WEB-INF/page/addUser.jsp</result>


在addUser.jsp页面中使用<s:fielderror/>显示失败信息。

实现步骤:编写action代码

public class HandValidates extends ActionSupport { 


 private String username; 

 private String 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; 

 } 


 public String update(){ 

 ActionContext.getContext().put("message", "更新成功"); 

 return "message"; 

 } 


 public String save(){ 

 ActionContext.getContext().put("message", "保存成功"); 

 return "message"; 

 } 


 @Override 

 public void validate(){ 


 if(this.username==null || "".equals(this.username.trim())){ 

 this.addFieldError("username", "用户名不能为空"); 

 } 

 if(this.mobile==null || "".equals(this.mobile.trim())){ 

 this.addFieldError("mobile", "手机号不能为空"); 

 }else{ 

 if(!Pattern.compile("^1[358]\\d{9}$").matcher(this.mobile).matches()){ 

 this.addFieldError("mobile", "手机号格式不正确"); 

 } 

 } 

 } 

}



第二步:配置struts.xml文件

<action name="validate_*" class="com.liyong.HandValidate.HandValidate" method="{1}"> 

 <!-- 下面的input视图是当存在验证错误或提交参数是类型转换出错 --> 

 <result name="input">/index2.jsp</result> 

 <result name="message">/WEB-INF/page/message.jsp</result> 

 </action>



第三步: 编写input视图和message视图

index2.jsp: 

<%@ page language="java" pageEncoding="UTF-8"%> 

<%@ taglib uri="/struts-tags" prefix="s"%> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 

<html> 

 <head> 

 <title>输入校验</title> 

 <meta http-equiv="pragma" content="no-cache"> 

 <meta http-equiv="cache-control" content="no-cache"> 

 <meta http-equiv="expires" content="0"> 

 </head> 

 <body> 

<!-- 以下标签是用来输出错误信息 --> 

 <s:fielderror/> 

 <form action="${pageContext.request.contextPath}/person/validate_save.action" method="post"> 

 用户名:<input type="text" name="username"/>不能为空<br/> 

 手机号:<input type="text" name="mobile"/>不能为空,并且要符合手机号的格式1,3/5/8,后面是9个数字<br/> 

 <input type="submit" value="提 交"/></form> 

 </body> 

</html> 


messagse.jsp: 


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 

<html> 

 <head> 

 <title>结果</title> 


 <meta http-equiv="pragma" content="no-cache"> 

 <meta http-equiv="cache-control" content="no-cache"> 

 <meta http-equiv="expires" content="0"> 

 </head> 


 <body> 

 ${message} 

 </body> 

</html>



第四步:部署
注意:改变表单的action提交方法可以看到
提交表单如下:

<form action="${pageContext.request.contextPath}/person/validate_save.action" method="post"> 

 用户名:<input type="text" name="username"/>不能为空<br/> 

 手机号:<input type="text" name="mobile"/>不能为空,并且要符合手机号的格式1,3/5/8,后面是9个数字<br/> 

 <input type="submit" value="提 交"/></form>


此时可以看到对update方法进行了验证

举报

相关推荐

0 条评论