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

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

阅读更多
知识点:

通过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方法进行了验证
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics