在WebWork中進(jìn)行數(shù)據(jù)驗(yàn)證其實(shí)有好幾種方式,在此我將他一一列舉出來
一、直接在execute()方法中進(jìn)行驗(yàn)證
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);
}
因?yàn)檎麄€action是放入OgnlValueStack中的,頁面就可以取出這些Error,然后顯示出來,在Input對應(yīng)的頁面加入如下代碼:
<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()方法進(jìn)行驗(yàn)證
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。
那么一旦驗(yàn)證出錯將會返回input頁面,但此時并無錯誤信息提示。將第一種方式顯示錯誤信息代碼加入到input 頁面,那么錯誤信息也將顯示出來。
三、使用WebWork的(標(biāo)準(zhǔn)形式)的驗(yàn)證
具體的步驟:
1.建立validators.xml文件,如果沒有自己定義的校驗(yàn)器則可以不用建立。
2.建立對應(yīng)action的檢驗(yàn)文件。
檢驗(yàn)文件名有兩種方式
(1)Action類名-validation.xml
(2)Action類名-Action別名-validation.xml
其中Action別名就是xwork.xml配置中action的name
3.頁面使用<ww/>tag
頁面的form和域都使用<ww/>tag方式
4.攔截器使用validationWorkflowStack
四、WebWork的客戶端驗(yàn)證
在使用第三種方式時候,通過對<ww:form>里面增加validate="true"即可實(shí)現(xiàn)客戶端驗(yàn)證(在<head></head>之間增加一個<ww:head/>tag效果更好,里面包括了css的定義)
五、DWR驗(yàn)證