Struts2的输入校验(2):重写validate方法(方法二)

基于Struts2校验器的校验可以完成绝大部分功能,但这些校验器都具有固定的校验逻辑,无法满足一些特殊的校验规则。对于一些特殊的校验要求,可能需要在Struts2中进行手动校验,Struts2提供了良好的可扩展性,从而允许通过手动方式完成自定义校验。

重写validate方法:

我们通过重写ActionSupport的validate方法来进行这种校验。

register.jsp :

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<s:fielderror></s:fielderror>
<s:form action="register">
<s:textfield name="name" label="姓名"></s:textfield>
<s:textfield name="age" label="年龄"></s:textfield>
<s:submit value="确定"></s:submit>
</s:form>
<s:debug></s:debug>
</body>
</html>
ok.jsp :

<body>
register success...
</body>
struts.xml :

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">

<struts>
    <package name="demo" extends="struts-default">
        <action name="register" class="action.RegisterAction">
            <result name="success">/ok.jsp</result>
            <result name="input">/register.jsp</result>
        </action>
    </package>
</struts>
RegisterAction.java :

public class RegisterAction extends ActionSupport {
	private String name;
	private int age;
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public void validate() {
		if(name.length()!=3){
			this.addFieldError("name","英文姓名长度必须为3");
		}
		if(!(age>=10 && age<=20)){
			this.addFieldError("age","年龄必须在10到20岁之间");
		}
	}

	public String execute(){
		if(name.equals("tom")){
			return "success";
		}
		return "input";
	}
}
在validate方法中,一旦发现校验失败,就把校验失败提示通过addFieldError方法添加进系统的FieldError中,除此之外,程序无需做额外的处理。如果Struts2发现系统的FieldError不为空,将会自动跳转到input逻辑视图,所以需要在struts.xml中为该Action的input逻辑视图指定物理视图。

上面的<s:fielderror/>标签专门负责输出系统的FieldError信息,也就是输出输入校验的失败提示。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值