天天看点

WebWork中的数据验证 (转载)

原文地址:http://www.blogjava.net/wangzhouyu/archive/2006/08/11/63055.html

在WebWork中进行数据验证其实有好几种方式

一、直接在execute()方法中进行验证

public String execute() {

boolean validationPassed = true;

if (StringUtils.isBlank(user.getName())) {

addActionError(getText("user.name.empty"));

validationPassed = false;

}

if (StringUtils.isBlank(user.getAddress())) {

addActionError(getText("user.address.empty"));

validationPassed = false;

}

return (validationPassed ? SUCCESS : INPUT);

}

因为整个action是放入OgnlValueStack中的,页面就可以取出这些Error,然后显示出来,在Input对应的页面加入如下代码:

<ww:if test="hasActionErrors"><!--你可以查看ActionSupport类源码,其中有boolean hasActionErrors()这个方法-->

<span class="errormessage">

<b>Errors:</b><br/>

<ww:iterator value="actionErrors">

<li><ww:property value="value[0]"/></li>

</ww:iterator>

</span>

</ww:if>

二、是用Validateable接口提供的validate()方法进行验证

ActionSupport就继承了这个接口

public void validate() {

if (StringUtils.isBlank(user.getName())) {

addActionError(getText("user.name.empty"));

}

if (StringUtils.isBlank(user.getAddress())) {

addActionError(getText("user.address.empty"));

}

}

然后在对的action的xwork.xml配置中,使用validationWorkflowStack拦截器,并确保有input result。

那么一旦验证出错将会返回input页面,但此时并无错误信息提示。将第一种方式显示错误信息代码加入到input 页面,那么错误信息也将显示出来。

三、使用WebWork的(标准形式)的验证

具体的步骤:

1.建立validators.xml文件,如果没有自己定义的校验器则可以不用建立。

2.建立对应action的检验文件。

检验文件名有两种方式

(1)Action类名-validation.xml

(2)Action类名-Action别名-validation.xml

其中Action别名就是xwork.xml配置中action的name

3.页面使用<ww/>tag

页面的form和域都使用<ww/>tag方式

4.拦截器使用validationWorkflowStack

四、WebWork的客户端验证

在使用第三种方式时候,通过对<ww:form>里面增加validate="true"即可实现客户端验证(在<head></head>之间增加一个<ww:head/>tag效果更好,里面包括了css的定义)

五、DWR验证