前文:struts2:数据校验,通过Action中的validate()方法实现校验,图解

如果定义的Action中存在多个逻辑处理方法,且不同的处理逻辑可能需要不同的校验规则,在这种情况下,就需要通过Struts2框架提供的validateX()方法来准确校验Action中的某一个方法,其中X表示处理逻辑的方法名。

还是以前的例子,换一种写法,来说明validate()方法和validateX()方法的用法。

1. 创建前台JSP页面

表单录入页面:registerM.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page isELIgnored="false"%>
<%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<s:form action="registerM" method="post">
账号:<s:textfield name="username"></s:textfield>${errors.username[0]}
<br/>
密码:<s:textfield name="password"></s:textfield>${errors.password[0]}
<br/>
年龄:<s:textfield name="age"></s:textfield>${errors.age[0]}
<br/>
身高:<s:textfield name="height"></s:textfield>${errors.height[0]}
<br/>
<s:submit method="log" value="提交"></s:submit>
</s:form>
</body>
</html>

注意:submit元素中的method属性为log,表示调用Action中的log方法,而不是默认的execute方法。

提交成功后显示页面:success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page isELIgnored="false"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
success! :)
</body>
</html>

2. 创建Action类

package com.clzhang.struts2.demo1;

import com.opensymphony.xwork2.ActionSupport;

public class RegisterMAction extends ActionSupport {
public static final long serialVersionUID = 1; private String username;
private String password;
private Integer age;
private Double height; public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Double getHeight() {
return height;
}
public void setHeight(Double height) {
this.height = height;
} public void validateLog() {
System.out.println("validateLog方法被调用..."); if (!username.trim().equals("admin")) {
this.addFieldError("username", "用户非法,必须为admin");
} if (!password.trim().equals("pass1")) {
this.addFieldError("password", "密码非法,必须为pass1");
} if (age == null || age >= 110 || age < 0) {
this.addFieldError("age", "年龄非法,必须为0到100之间");
}
if (height == null || height < 0 || height > 3) {
this.addFieldError("height", "身高非法,必须为0到3米之间");
}
} public String log() {
System.out.println("log method said:"+ username + "|" + age + "|" + height + " register finished!"); return SUCCESS;
} @Override
public void validate() {
System.out.println("validate方法被调用...");
} public String execute() {
System.out.println(username + "|" + age + "|" + height + " register finished!"); return SUCCESS;
}
}

注意:execute()方法对应验证方法为validate()方法;而log()方法对应的验证方法则为validateLog()方法。

3. 修改struts.xml文件

        <action name="registerM" class="com.clzhang.struts2.demo1.RegisterMAction">
<result name="success">/struts2/demo1/success.jsp</result>
<result name="input">/struts2/demo1/registerM.jsp</result>
</action>

很简单,提交成功显示成功信息;数据不正确则返回到registerM.jsp。

4. 测试

打开IE,输入地址:http://127.0.0.1:8080/st/struts2/demo1/registerM.jsp

结果如下:

直接提交,结果如下:

后台显示:

输入正确的数据,再次提交,前台显示到成功页面,后台显示:

注意:每次运行都是先调用validateLog方法,然后再调用validate方法(哪怕是validateLog方法已经出错了)。校验出错时,使用函数addFieldError将错误信息key-value对放入到容器中,在JSP中再取出来显示。

更多阅读:

struts2:数据校验,通过Action中的validate()方法实现校验,图解

struts2:数据校验,通过XWork校验框架实现(validation.xml)

struts2:数据校验,通过Action中的validate()方法实现校验(续:多业务方法时的不同验证处理)的更多相关文章

  1. struts2:数据校验,通过Action中的validate()方法实现校验,图解

    根据输入校验的处理场所的不同,可以将输入校验分为客户端校验和服务器端校验两种.服务器端验证目前有两种方式: 第一种 Struts2中提供了一个com.opensymphony.xwork2.Valid ...

  2. 第5章—构建Spring Web应用程序—关于spring中的validate注解后台校验的解析

    关于spring中的validate注解后台校验的解析 在后台开发过程中,对参数的校验成为开发环境不可缺少的一个环节.比如参数不能为null,email那么必须符合email的格式,如果手动进行if判 ...

  3. Struts2(四):在Action中如何访问Web资源

    1.什么WEB资源? HttpServletRequest,HttpServletRespone,HttpApplication,ServletContext,HttpSession等原生Servle ...

  4. struts2学习笔记之八:Action中方法的动态调用

    方法一:action名称+!+方法名称+后缀 Action类中增加addUser()和delUser()方法, package com.djoker.struts2; import org.apach ...

  5. 一个Action中,可以写多个类似的业务控制方法

    1)通过模块根路径 + 功能子路径 = 访问模块下子功能的路径 @Controller @RequestMapping(value="/user") public class Us ...

  6. struts2数据校验与国际化

    数据校验: Action里的validate()方法能校验action类所有的方法,如果有错,如:addFieldError,会自动返回到workflow校验拦截器不向下继续进行,不用return i ...

  7. Struts2(二)---将页面表单中的数据提交给Action

    问题:在struts2框架下,如何将表单数据传递给业务控制器Action. struts2中,表单想Action传递参数的方式有两种,并且这两种传参方式都是struts2默认实现的,他们分别是基本属性 ...

  8. (21) java web的struts2框架的使用-Action实现的三种方式

    上一篇介绍了struts使用的四个步骤. 其中在开发action的时候,可以有三种实现方式: 1,写一个类,继承与ActionSupport 2,写一个类,实现Action接口 3,写一个类,实现业务 ...

  9. struts2:多业务方法的处理(动态调用,DMI)

    struts2支持调用指定Action类中某一个业务方法.如果没有指定,则调用execute方法. 1. 第一种实现方式,通过URL叹号参数 1.1 创建Action类,带多个方法 package c ...

随机推荐

  1. 用c#开发微信 (6) 微渠道 - 推广渠道管理系统 1 基础架构搭建

    我们可以使用微信的“生成带参数二维码接口”和 “用户管理接口”,来实现生成能标识不同推广渠道的二维码,记录分配给不同推广渠道二维码被扫描的信息.这样就可以统计和分析不同推广渠道的推广效果. 本系统使用 ...

  2. Dynamic CRM 2013学习笔记(十三)附件上传 / 上传附件

    上传附件可能是CRM里比较常用的一个需求了,本文将介绍如何在CRM里实现附件的上传.显示及下载.包括以下几个步骤: 附件上传的web页面 附件显示及下载的附件实体 调用上传web页面的JS文件 实体上 ...

  3. 解决dnu restore时的“Cannot handle address family”问题

    前几天在使用基于 mono 的 dnx 中的 dnu restore 命令安装 nuget 包包时,遇到了 “Cannot handle address family” 错误,错误详情如下: Cann ...

  4. [MSSQL2005]再看CTE

    个人认为CTE最大的做点是可以处理树状存储的数据了 例如类似这样设计的数据表,ID,ParentID这样的设计使用CTE就非常方便,原因就是CTE可以自引用,达到类似递归的效果 那么问题来了,如何使用 ...

  5. MMM互助金融/理财源码

    1.1.1MMM互助金融配比系统源码销售 (3mphp.com/mmm-office.com) 联系QQ: 3375551869,全套源码,包含: 1 源码:安装.开发文档 2 数据库:含演示数据,自 ...

  6. ROCK 聚类算法‏

    ROCK (RObust Clustering using linKs)  聚类算法‏是一种鲁棒的用于分类属性的聚类算法.该算法属于凝聚型的层次聚类算法.之所以鲁棒是因为在确认两对象(样本点/簇)之间 ...

  7. 如何给input[file]定义cursor

    来源:http://stackoverflow.com/questions/1537223/change-cursor-type-on-input-type-file Simple question. ...

  8. js从一个函数中结束另一个函数的问题

    等待通过事件监听结束另一函数的方法出炉…… 1.事件监听? 2.从a里把b函数全局定义一下,不推荐. function a(){ alert("a"); b=function(){ ...

  9. paip.提升效率--数据绑定到table原理和流程Angular js jquery实现

    paip.提升效率--数据绑定到table原理和流程Angular js  jquery实现 html #--keyword 1 #---原理和流程 1 #----jq实现的代码 1 #-----An ...

  10. mysql输入密码后闪退怎么办?

    第一: 首先需要想到的是mysql的服务可能没开,首先打开mysql的服务 第二: 打开Mysql的命令行输入密码即可 第三: 登录成功 第四: 顺便验证自己安装的mysql是否成功 输入显示所有数据 ...