Form 验证
在这篇我们将探索用Struts2去验证用户的输入。有两种方式你可以用Struts2进行验证。这篇主要涉及基础的方法,在Action类中进行验证。
Add validate Method
如果确定使用Struts2 Action类去验证一个用户按Struts2形式输入,你需要定义一个验证方法在Action类。使用前面的例子Processing Forms,让我们说一下使用规则:
1、用户必须提供第一个名字
2、用户必须提供一个eamil地址
3、用户年龄小于18岁不能注册
如果就按照前一篇的介绍使用的输入形式。
在验证的方法中,我们能引用personBean实例的域的值,一旦我们有了值,就可以按照逻辑去执行我们的业务规则。
添加如下验证方法到Register.java方法中。
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"
);
}
}
|
Handle Input Being Returned
如果用户输入的是无效的将返回"input",那我们将做什么?大部分情况是我们想重新显示web页并且包含一个用户错误的信息内容。
想提交返回的input的值,我们需要添加如下代码到struts.xml
<
result
name
=
"input"
>/register.jsp</
result
>
上面的代码放在success result node之后,放在action node关闭之前。
ErrorMessages
当验证失败并且Struts2返回input,Struts2框架将重新显示register.jsp.一旦我们使用Struts形式标签,Struts2将自动添加错误信息。这些错误信息是调用addFieldError方法时被指定的。
addFieldError(
"personBean.firstName"
,
"First name is required."
)
部署运行:
http://localhost:8080/Forms_Validation/register.jsp 运行结果:
当点击"Submit"按钮时,如果不做任何输入时,页面显示效果
显示的红色效果,因为在<head></head>之间添加<s:head/>
以上是几个最基本的验证方法,当然还有更复杂的验证方法例如:XML