——?dú)g迎訪問(wèn)rogerfan的博客,常來(lái)《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術(shù),交流工作經(jīng)驗(yàn),分享JAVA帶來(lái)的快樂(lè)!本網(wǎng)站部分轉(zhuǎn)載文章,如果有版權(quán)問(wèn)題請(qǐng)與我聯(lián)系。
一、使用校驗(yàn)規(guī)則創(chuàng)建Person-validation.xml文件
為了利用WebWork校驗(yàn)框架實(shí)現(xiàn)數(shù)據(jù)校驗(yàn)有兩件事情要做,第一是創(chuàng)建一個(gè)validation.xml文件,第二是在需要進(jìn)行校驗(yàn)的action中加入一個(gè)校驗(yàn)interceptor引用。
WebWork允許兩種類(lèi)型的校驗(yàn) —— per-action和model-based。因?yàn)樗械腁ction對(duì)Person引用都要使用相同的校驗(yàn)規(guī)則,所以本文將使用model-based類(lèi)型的校驗(yàn)。
在src/dao/**/model目錄下創(chuàng)建Person-validation.xml文件并加入下列內(nèi)容:
在ApplicationResources_*.properties文件中的"errors.message" 鍵值使用字段的"name"屬性以實(shí)現(xiàn)國(guó)際化。如果不需要提供對(duì)i18n的支持可以直接對(duì)<message>元素中指定顯示內(nèi)容。
現(xiàn)在可以配置PersonAction使用visitor validation。為了實(shí)現(xiàn)這個(gè)目標(biāo),在PersonAction目錄下創(chuàng)建一個(gè)PersonAction-validation.xml文件。加入下面的內(nèi)容:
糟糕的是,WebWork沒(méi)有提供一個(gè)透明機(jī)制讀取Person-validation.xml文件并且標(biāo)記在UI上標(biāo)記哪個(gè)字段時(shí)必須的。 AppFuse的Struts和Spring版本使用LabelTag實(shí)現(xiàn)了這個(gè)目標(biāo),不過(guò)他們也只是實(shí)現(xiàn)了一個(gè)普通的校驗(yàn)。我希望有人能夠?yàn)?WebWork提供相同的功能實(shí)現(xiàn)。同時(shí)JSP tags "required" 屬性實(shí)際上沒(méi)有對(duì)你所指定的校驗(yàn)規(guī)則作任何事情,僅僅是在加入對(duì)應(yīng)的字段后面加入了一個(gè)星號(hào)而已。
當(dāng)然,也可以使用per-action校驗(yàn)。只需要拷貝Person-validation.xml文件到"webapp.action"包中并且把它重命名為PersonAction-validation.xml。
為了使在"savePerson" 操作中我們新加入的校驗(yàn)規(guī)則發(fā)揮作用,我們要把原來(lái)在"validator"屬性上的注釋去掉。確定最后在web/WEB- INF/classes/xwork.xml文件的"savePerson" <action> 部分包含以下內(nèi)容:
說(shuō)明:在Appfuse中使用的validationStack和WebWork自帶的有些不同,更多的信息可以在WebWork's JIRA中查找。
Powered by: BlogJava Copyright © rogerfan