`
1028826685
  • 浏览: 920811 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类

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

阅读更多
知识点:

通过重写validate() 方法实现, validate()方法会校验action中所有与execute方法签名相同的方法。当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport ),如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息。
validate()使用例子:
public void validate() {
       if(this.mobile==null || "".equals(this.mobile.trim())){  this.addFieldError("username", "手机号不能为空");
        }else{  if(!Pattern.compile("^1[358]\\d{9}").matcher(this.mobile.trim()).matches()){
this.addFieldError(“mobile", "手机号的格式不正确"); }
       }
}

验证失败后,请求转发至input视图:
<result name="input">/WEB-INF/page/addUser.jsp</result>

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

注意Validate(){}会对这个Action中的所有方法进行验证。

照样看步骤:

第一步:新建类实现继承ActionSupport

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", "手机号格式不正确");
}
}
}
}

第二步:配置stucts.xml文件

<action name="manage_*" class="com.liyong.HandValidates.HandValidates" method="{1}">
        <!-- 下面的input视图是当存在验证错误或提交参数是类型转换出错 -->
        <result name="input">/index.jsp</result>
        <result name="message">/WEB-INF/page/message.jsp</result>
        </action>
注意:上面的input视图是当验证出错或参数请求类型转换是出现异常都会自动转到input视图

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

index.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/manage_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>

message.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方法名可以知道对action中的所有方法进行验证

.....

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics