一,首先webwork的validator是基于攔截器的,所以首先要配制一下攔截器,默認(rèn)的攔截器,已經(jīng)
使用了validator,如果你想定義自己的攔截器組合,記得在你的攔截器的stack中把這句話加入





但是如果你想自己定義,那么記得注冊(cè)你的驗(yàn)證器(Validator),一個(gè)簡(jiǎn)單的注冊(cè)辦法是
添加一個(gè)文件名為 validators.xml 的文件在你的classpath (/WEB-INF/classes) 的根目錄下
文件中的內(nèi)容類似如下:















注意:
1,validators.xml如果已經(jīng)定義了,那么它應(yīng)該在classpath中可以找到.然而如果不需要自定義的校驗(yàn)器,那么這不是必須的.WebWork會(huì)自動(dòng)從發(fā)布包里的
xwork jar文件中取得一個(gè)事先定義好的校驗(yàn)器集合(com/opensymphony/xwork/validator/validators/default.xml).
瀏覽ValidatorFactory的static塊來(lái)了解詳細(xì)信息
2,如果自定義的校驗(yàn)器被定義了而且創(chuàng)建了一個(gè)validators.xml文件并放在classpath中,
記得復(fù)制所有其他你需要的預(yù)定義的校驗(yàn)器到validators.xml里,如果你不需要注冊(cè)則不需要.
一旦validators.xml在classpath里被檢測(cè)到,缺省的 (com/opensymphony/xwork/validator/validators/default.xml)
就不會(huì)被裝載了.只有沒(méi)發(fā)現(xiàn)自定義 validators.xml的時(shí)候才會(huì)裝載.要小心.這點(diǎn)類似Java中的缺省構(gòu)造函數(shù)
三、定義校驗(yàn)規(guī)則<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="name">
<!--必添-->
<field-validator type="requiredstring">
<!--是否使用trim-->
<param name="trim">true</param>
<!--提示的錯(cuò)誤信息-->
<message>You must enter a name</message>
</field-validator>
</field>
<field name="currDate">
<field-validator type="date">
<!--最小時(shí)間-->
<param name="min">01/01/2007</param>
<!--最大時(shí)間-->
<param name="max">02/28/2007</param>
<!--提示的錯(cuò)誤信息-->
<message>
The date must be between 01-01-2007 and 02-28-2007.
</message>
</field-validator>
</field>
<field name="url">
<!--short-circuit是否短路檢驗(yàn),類似&&運(yùn)算的短路算法-->
<field-validator type="required" short-circuit="true">
<!--提示的錯(cuò)誤信息-->
<message>You must enter a value for url.</message>
</field-validator>
<!--webwork提供的url驗(yàn)證-->
<field-validator type="url" short-circuit="true">
<!--提示的錯(cuò)誤信息-->
<message>Not a valid url.</message>
</field-validator>
</field>
<field name="mail">
<field-validator type="required">
<message>You must enter a value for 郵件.</message>
</field-validator>
<!--mail的驗(yàn)證,驗(yàn)證器由webwork提供-->
<field-validator type="email">
<message>Not a valid 郵件.</message>
</field-validator>
</field>
<field name="age">
<field-validator type="int">
<!--同樣的最大最小值-->
<param name="min">1</param>
<param name="max">200</param>
<message>
<!--注意這里,msn中可以用表達(dá)式取出值棧中的值例如$
{min}-->
Only people ages $
{min} to $
{max} may be true,otherwise
you are a ghost
</message>
</field-validator>
</field>
<field name="desc">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>You must enter a desc</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">1</param>
<param name="maxLength">10</param>
<!--從屬性文件中取出my.key顯示,如果取不到my.key就顯示
You must enter a desc length=10(my.key)-->
<message key="my.key">
You must enter a desc length=10(my.key)
</message>
</field-validator>
<!--可以使用正則表達(dá)式-->
<field-validator type="regex">
<param name="expression">
<![CDATA[([a-z][0-9][A-Z][x])]]>
</param>
<!--message可以由固定的字符串,值棧中的值$
{desc}以及通過(guò)調(diào)用方法取到的
屬性文件中的值$
{getText('my.key')}-->
<message>
"regex error ${getText('my.key')} ${desc}"
</message>
</field-validator>
</field>
<!--上邊的驗(yàn)證叫字段驗(yàn)證,下邊這些驗(yàn)證叫普通驗(yàn)證,普通驗(yàn)證是優(yōu)于字段驗(yàn)證的。
在使用短路的時(shí)候要小心-->
<!--上邊那些都是基于字段的驗(yàn)證,這個(gè)是基于Action的驗(yàn)證
如果要在頁(yè)面顯示這些消息,需要加入<ww:actionError/>
-->
<validator type="expression">
<!--可以基于表達(dá)式的驗(yàn)證name.equals(desc)-->
<param name="expression">name.equals(desc)</param>
<message>name not the same as desc</message>
</validator>
<!-- Plain Validator 2 -->
<!--可以基于表達(dá)式的驗(yàn)證mail.startsWith('mark')-->
<validator type="expression" short-circuit="true">
<param name="expression">mail.startsWith('mark')</param>
<message>Email does not start with mark</message>
</validator>
</validators>
四、客戶端驗(yàn)證
加入validate="true"
<ww:form name="test" action="javascriptValidation" validate="true">
...
</ww:form>
這樣的話webwork會(huì)根據(jù)你的服務(wù)器端的驗(yàn)證,對(duì)應(yīng)生成javaScript的驗(yàn)證,而且提示信息和服務(wù)器端
驗(yàn)證的方式一樣,而不是alert的方式顯示。(前題是你使用的都是標(biāo)準(zhǔn)的驗(yàn)證器)
五、
對(duì)應(yīng)上邊驗(yàn)證器的web頁(yè)面


























































































































































































七、簡(jiǎn)單提示:屬性文件的名字類名+properties,validator配制文件的名字類名+validation.xml
(還有其它的組合方式)
例如對(duì)應(yīng)的DbAdminAction.java
DbAdminAction-validation.xml
DbAdminAction.properties
注意
許多WebWork 標(biāo)簽的 required 屬性和客戶端校驗(yàn)沒(méi)有什么關(guān)系. 它只是在某個(gè)theme(例如xhtml)中用來(lái)在一個(gè)標(biāo)識(shí)為必填的字段周圍放置一個(gè)'*'.
八、上邊程序的示例代碼(從eclipse導(dǎo)出的工程)
http://www.aygfsteel.com/Files/dreamstone/vl.rar