2011-10-07 88 views
0

如何傳遞給方法validate {State}參數,而不是模型?如何將參數傳遞給驗證Spring Webflow的方法?

我有兩個對象。 MyForm表單對象和User可以修改MyForm的對象。

視圖定義:

<view-state id="finish" view="finish" model="myform">  
<transition on="submit" to="goToFinish" bind="true" validate="true" /> 
</view-state> 

我的驗證方法

private MessageContext context; 

public void validateSummary(MyForm myForm, MessageContext context) throws 
BusinessException { 
     this.context = context; 

     validateAddress(myForm); 

.... 

我如何可以驗證用戶從一個attribiute?沒有將用戶設置爲MyForm對象?

請幫忙。

回答

2

Spring Webflow Documentation

  • 有兩種方法來進行編程模型驗證。首先是在模型對象中實現驗證邏輯。第二個是實現一個外部驗證器。這兩種方式都爲您提供一個ValidationContext來記錄錯誤消息並訪問有關當前用戶的信息

簡單的名稱validate${state},其中${state}是您要驗證運行您的視圖狀態的ID(在您的示例)創建一個公共方法:

<view-state id="finish" view="finish" model="myform">  
    <transition on="submit" to="goToFinish" bind="true" validate="true" /> 
</view-state> 

默認的驗證會是myform模型對象中的公共方法:

public void validateFinish(ValidationContext context) { 

    ... 
    context.getUserPrincipal() // current user 
    ... 
} 

一個ValidationContext可以讓你獲得一個MessageContext在驗證期間記錄消息。它還公開關於當前用戶的信息,例如信號userEvent和當前用戶的Principal身份。

ValidationContext API:

// The current user event that triggered validation. 
java.lang.String getUserEvent() 

// The current user. 
java.security.Principal getUserPrincipal() 

// Obtain the value entered by the current user in the UI field bound to the property provided.  
java.lang.Object getUserValue(java.lang.String property)