2012年9月5日 星期三

Struts 教學 - validwhen 介紹

Validwhen 是 Struts Validations 中的一個 validation rules

從Struts 1.2之後開始支援,其內容最主要的目的是

在我們驗證目前Field的值的時候,可能要從其他Field的值綜合起來進行判斷

譬如,我要驗證當購買數量的欄位值不為空的時候 那麼到貨日期也不能為空

首先 要使用 Validwhen 的話記得要放入 antlr.jar 檔

否則當 Struts 在進行驗證的時候會拋出如下的錯誤訊息

java.lang.noclassdeffounderror antlr/ token stream

以下貼出一段範例解說


<field property="emailAddress" depends="validwhen">
      <arg0 key="userinfo.emailAddress.label"/>
        <var>
          <var-name>test</var-name>
          <var-value>((sendNewsletter == null) or (*this* != null))</var-value>
        </var>
 </field>


emailAddress 是欄位名稱,要採用validwhen rule 的話,在depends要使用 validwhen 這個關鍵字

在var標籤裡的<var-name>需用test的的值

<var-value>則是你描述驗證的地方,這部份Expression須為一個布林值,

用上面那段程式來看,其實就是描述了
當 sendNewsletter 如果等於空或是null OR emailAddress 不等於空或是null 的話那麼

這個 validation rule 就會 pass 過去,其中我們可以用 and 或是 or 來串接多個驗證條件

注意的是,這裡的 null 可以 match 成 Field 為Null 外,也包括空字串喔!

而 *this* 則表示了當前這個的 Field 的值,以上的範例就是指emailAddress  

最後提醒一下再使用 ValidWhen 的時候,<var-value>內的判斷式

都必須用括號包住,就算你只有一個判斷條件也是如此


沒有留言:

張貼留言