2010-07-26 87 views
0

這可能是一個基本的問題,多個驗證規則:我想了解下Struts的驗證代碼工作:Struts的驗證與單場

<field property="myField" depends="validwhen, maxlength"> 
    <msg name="validwhen" key="error1.key" /> 
    <msg name="maxlength" key="error2.key"/> 
    <var> 
     <var-name>test</var-name> 
     <var-value> isFieldsShown == "no" </var-value> 
    </var> 
    <var> 
     <var-name>maxlength</var-name> 
     <var-value>128</var-value> 
    </var> 
</field> 

有類似之處,首先是validwhen規則檢查,如果成功,那麼maxlength規則被檢查?或者,如果當返回true時有效,那麼該字段被認爲是有效的,而根本不考慮最大長度規則?

回答

0

自從我使用驗證器框架以來,我一直在努力,但從我記憶中得出的結論如下。

驗證字段時,如果所有驗證均通過,則該字段將被視爲有效。如果至少一次驗證失敗,則該字段被認爲是無效的。

如果有一個驗證程序列表需要運行,驗證過程應該在第一次失敗時退出(如果由於驗證已失敗而將該字段標記爲無效,則無法運行額外的昂貴驗證)。

的文件似乎表明什麼,我記得:

validator.dtd - field.depends attribute驗證的逗號分隔的列表來對應用這一領域。爲了獲得成功,所有驗證人必須成功

Field.validate運行的所有驗證在過每個項目又取決於條款,當第一個失敗返回。