2012-09-11 79 views
0

我正在使用Spring WebFlow如何在Spring Webflow中驗證集合?

我需要檢查我是否至少有15個類型Practices的集合,如果不是我不能轉換到下一個流程。

我的註冊流量:

<view-state id="practices" view="RegisterPractices" model="labs"> 
     <transition on="add" to="createNewPractice"></transition> 
     <transition on="next" to="items" validate="true"></transition> 
     <transition on="back" validate="false" to="owners"></transition> 
</view-state> 
<subflow-state id="createNewPractice" subflow="addPractice"> 
     <output name="practica" />  
     <transition on="practiceAdded" to="practices"> 
      <evaluate expression="labs.addPractice(currentEvent.attributes.practice)"></evaluate> 
     </transition>  
     <transition on="practiceCancel" to="practices"></transition> 
</subflow-state> 

的JSP實踐:

<h2>Practices</h2> 
    <table class="standard-table" cellpadding="0" cellspacing="0"> 
     <thead> 
      <tr> 
       <th>Practice</th> 
       <th>Operation</th> 
       <th>Action</th> 
      </tr> 
     </thead> 
     <tbody> 
      <c:forEach items="${ labs.practices }" var="practice"> 
      <tr> 
       <td>${ practice.practice}</td> 
       <td><c:choose><c:when test="${ practice.realize == 1}">Realize</c:when><c:otherwise>Deriva</c:otherwise></c:choose></td> 
      </tr> 
      </c:forEach> 
     </tbody> 
    </table> 
    <div> 
     <a href="${flowExecutionUrl}&_eventId=add">Add a New Practice</a> 
      <a href="${flowExecutionUrl}&_eventId=next">Back</a> 
     <a href="${flowExecutionUrl}&_eventId=back">Next</a> 
    </div> 

的視圖狀態的做法僅僅是一個的加實踐列表JSP。

我嘗試過使用customValidator,但無法處理MessageBuilder.source(),因爲在該視圖中沒有任何對象。

我與決策狀態嘗試過但我不能表現出像「你必須至少選擇15種做法繼續」

+0

爲什麼你不能在實驗室模型的自定義驗證器中做新的MessageBuilder()。error()。source(「practices」)? –

+0

,因爲我認爲如果我在該視圖狀態(jsp)中有一個字段,則無法指示源。 – grteibo

回答

0

所以這個自定義的驗證將無法正常工作的消息?

@Component 
public class LabsValidator { 

    public void validatePractices(final Labs labs,final ValidationContext context) { 
     if(labs.getPractices().size() < 15) { 
      context.getMessageContext().addMessage(new MessageBuilder().error().code("labs.practices.min15").build()); 
     } 
    } 

} 
+0

工作完美,我有問題捕捉消息。謝謝 – grteibo

+0

不客氣! –