Struts2教程六——Form Validation

本教程假设你以完成Processing Forms 课程并有Form_Processing_Struts2_Ant (or Form_Processing_Struts2_Mvn)项目,也可在Google Code -http://code.google.com/p/struts2-examples/downloads/list下载Form_Validation_Struts2_Ant或者 Form_Validation_Struts2_Mvn。

引言

本课学习使用Struts 2进行表单验证。有两种方法,本课使用更基本的一种,将表单验证写入Struts 2 Action类中。

添加validate方法

为了能使Struts 2 Action类能处理表单验证,必须在Action class中定义一个validate方法,在Processing Forms 中,我们知道有如下规则:

1. 用户必须提供first name
2. 用户必须提供email
3. 用户必须大于18岁

在validate方法中我们可以通过引用personBean的适当的get方法得到成员变量的值,一旦我们有值,我们便可以实现业务逻辑。.

在Register.java 中加入以下方法

validate method
	public void validate(){
		
		if ( personBean.getFirstName().length() == 0 ){	

			addFieldError( "personBean.firstName", "First name is required." );
			
		}
		
				
		if ( personBean.getEmail().length() == 0 ){	

			addFieldError( "personBean.email", "Email is required." );
			
		}
		
		if ( personBean.getAge() < 18 ){	

			addFieldError( "personBean.age", "Age is required and must be 18 or older" );
			
		}
		
		
	}

当用户提交之后,Struts 2 会将用户输入转换成personBean'的成员变量,Struts 2 会自动执行validate 方法。 If如果任何if语句为true,Struts 2会调用addFieldError方法(继承自ActionSupport)。

如果有任何错误被加如,Struts 2 将不会继续调用execute方法,而是返回input作为执行action的返回值。

处理Input返回值

如果返回input通常说明用户输入无效,这时我们通常返回原来的表单,外加错误提示。

为了处理input返回值,我们要在struts.xml的action节点加入以下result节点。

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

上面节点的位置位于success result节点后,action结束标签的前面。

错误信息

验证失败并且Struts 2返回input,Struts 2 framework会重新返回register.jsp。而且Struts 2会自动加上错误信息,这些错误信息的内容就是addFieldError方法中标明的,addFieldError 方法有两个参数,第一个是表单域的名字,第二个是该表单域对应的错误信息。

因此下面addFieldError方法的调用

addFieldError( "personBean.firstName", "First name is required.")

会导致"First name is required"消息显示在firstName表单域的上面。

运行项目,点击register链接,不填写直接提交会看见:


Struts 2调用validate方法,校验失败,带有错误信息的register.jsp页面被显示出来。

风格化错误信息

Struts 2 s:head标签通常被用于具有css风格的错误信息提示,在register.jsp页面head结束标签之前加上<s:head />重复上面步骤会看见:


总结

本教程学习了通过添加validate方法校验表单,另一个方式使用xml,后面会介绍。

下篇

下篇教程会学习消息资源文件,将文本从view页面分离。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值