先贴个本帖的地址,以免被爬:struts2教程 官方系列六:表单验证 即 http://www.cnblogs.com/linghaoxinpian/p/6906720.html
下载本章节代码
介绍
在本教程中,我们将探索使用Struts2来验证用户在表单上的输入。有两种方法可以来进行表单验证。本教程将介绍更基本的方法,在Struts2 Action类中包含验证。
为了使Struts2 Action类在Struts2 表单中验证用户的输入,您必须在Action类中定义一个validate方法。假设我们有这些业务规则:
1.用户必须提供第一个名称用户
2.必须提供一个电子邮件地址用户
3.未到18岁不能注册
添加如下代码到/src/action/RegisterAction.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");} }
当用户在register表单上按下提交按钮时,Struts2将把用户的输入传递给personBean的实例字段。然后Struts 2将自动执行validate 方法。如果if判断条件为true,那么Struts2将调用它的addFieldError方法(继承自ActionSupport类)。
如果验证失败,那么Struts2就不会继续调用execute方法了。相反,Struts2 将返回“input”作为该操作的结果。(常用结果的还有success、error)
处理 "Input" 结果
那么,如果Struts2返回“input”表示用户的表单输入无效,那么接下来该怎么办呢?在大多数情况下,我们将希望重新显示具有表单的web页面,并将错误消息包含在表单中,以告知用户。
为了处理"input" 结果,我们需要在struts.xml添加配置:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""http://struts.apache.org/dtds/struts-2.5.dtd"><struts><constant name="struts.devMode" value="true" /><package name="basicstruts2" extends="struts-default"><action name="index"><result>/index.jsp</result></action><!--hello-><action name="hello" class="action.HelloWorldAction" method="execute"><result name="success">/HelloWorld.jsp</result></action><!-- register --><action name="register" class="action.RegisterAction" method="execute"><result name="success">/thankyou.jsp</result><result name="input">/register.jsp</result></action></package></struts>
因此,当验证失败,Struts2 返回"input"结果时,Struts2 将重新显示register.jsp。由于我们使用了Struts2 的表单标签,因此Struts2将自动的添加错误消息。这些错误消息是我们在addFieldError方法调用中指定的。addFieldError方法有两个参数。第一个是错误字段的表单字段名,第二个是在表单字段上方显示的错误消息
addFieldError("personBean.firstName", "First name is required.")
将会在表单上的firstName字段上面显示"First name is required."
运行
添加css
Struts2 的<s:head/>标签可用于对错误消息添加CSS,这个标签要放在HTML的<head>标签中,重新运行:
总结
本教程通过向Action类添加验证方法来验证用户的表单输入。还有一种更复杂的方法可以使用XML验证用户输入。如果您想了解关于在Struts 2中使用XML进行验证的更多信息,请参阅验证Validation
在我们的下一个教程中,我们将使用消息资源文件将文本从视图页面中分离出来。