相关代码下载:http://download.csdn.net/detail/a85820069/6843431
一。使用继承ActionSupport类实现验证方法:
ActionSupport类是一个工具类,它实现了Action接口,并且实现了Validateable接口,提供了数据校验功能。
在Validatable接口中定义了一个validate()方法,重写该方法实现数据校验逻辑,并将错误信息添加到ActionSupport类的fieldErrors对象中,然后通过OGNL表达式负责输出到页面。
下面是被重写的validate()方法,addFieldError方法负责添加错误信息(与页面标签有绑定功能,控制错误信息输出位置),getText()方法是国际化信息方法,在配置文件中查找对应的内容。
@Override
public void validate() {
if(null == username || "".equals(username.trim())) {
addFieldError("username", getText("userErrorMessage"));
}
if( null == password || "".equals(password.trim()) ){
addFieldError("password", getText("passwordErrorMessage"));
}
}
validate()方法在execute方法之前被执行, validate()方法执行结束后,Action的fieldErrors里的校验错误不为空,请求将被转发给input逻辑试图。
所以最后需要在struts.xml文件中为该action配置input跳转设置。
下面是struts.xml中的配置,关键在于<result name="input">/Login.jsp</result>配置内容。
<action name="Login" class="action.LoginAction">
<result name="input">/Login.jsp</result>
<result name="success" >/welcome.jsp</result>
<result name="error" >/error.jsp</result>
</action>
跳转到input页面后,错误信息会自动展现到页面中。
二。使用struts2的校验框架
使用struts2校验框架需要做两件事。
1.编写校验规则配置文件
2.为action配置input跳转设置。
配置文件如下:
命名规则:ActionName-validation.xml:其中ActionName就是需要校验的Action的类名,且该文件应该与Action的class文件位于同一个路径下。
key表示国际化文档中的KEY。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<field name="username">
<field-validator type="requiredstring">
<message key="userErrorMessage"></message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<message key="passwordErrorMessage"></message>
</field-validator>
</field>
</validators>
下面是struts.xml中的配置,关键在于<result name="input">/Login.jsp</result>配置内容。
<action name="Login" class="action.LoginAction">
<result name="input">/Login.jsp</result>
<result name="success" >/welcome.jsp</result>
<result name="error" >/error.jsp</result>
</action>
当提交时,数据格式不满足规则要求时,自动跳转到input页面,并展现错误信息。