2011-11-16 43 views
1

我目前有一個使用Webflow + Ajax的Spring Webflow應用程序。Spring Webflow |每個轉換不同的驗證方法

我有一個視圖狀態稱爲「A」,有幾個轉換。

<view-state id="A" model="myClass"> 
    <transition on="X1" .../> 
    <transition on="X2" .../> 
    <transition on="X3" .../> 
</view-state> 

問題是每個轉換隻能驗證「myClass」的一部分,而不能全部驗證。默認情況下Spring Webflow有一個單一的方法來驗證。

基本上我需要的是在每次轉換時調用不同的驗證方法,而不是單獨一個。

這可能嗎?任何想法如何做到這一點?

在此先感謝!

回答

3

爲什麼不使用一個ValidationClass來查看狀態? 你可以通過調用

public String getUserEvent(); 
在ValidationContext

拿到triggert驗證的事件。 然後,根據結果做任何你想驗證的事情。

+0

ebflow參考指南寫道:ValidationContext ValidationContext允許您獲取MessageContext以在驗證期間記錄消息。它還公開關於當前用戶的信息,例如用信號通知的用戶事件和當前用戶的主要身份。這些信息可用於根據用戶界面中激活的按鈕或鏈接或者通過身份驗證的用戶來定製驗證邏輯。 [鏈接](http://static.springsource.org/spring-webflow/docs/2.0.x/reference/htmlsingle/spring-webflow-reference.html#view-validate) – tarts

+0

這似乎是它的工作原理。非常感謝你。我會測試它,如果有的話,我會告訴你! –

1

有可能使用名爲validatorMethod的屬性來指定特定的方法來調用驗證器,如here所述。下面是從Javadoc中的變形例示出了如何做到這一點:

<view-state id="displayCriteria"> 
    <on-render> 
     <evaluate expression="formAction.setupForm"/> 
    </on-render> 
    <transition on="search" to="executeSearch"> 
     <evaluate expression="formAction.bindAndValidate"> 
      <attribute name="validatorMethod" value="validateSearchCriteria"/> 
     </evaluate> 
    </transition> 
</view-state> 

這是假設爲searchFormAction定義的驗證器有一個稱爲validateSearchCriteria方法。

+0

我認爲這適用於以前版本的Spring Webflow,但不適用於3.第一個答案有效。不管怎麼說,多謝拉。 –