Как передать параметр в метод проверки Spring Webflow? - PullRequest
0 голосов
/ 07 октября 2011

Как мне передать в метод validate параметр {State}, отличный от модели?

У меня есть два объекта.Объект формы MyForm и объект пользователя, который может изменять 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);

....

Как проверить атрибуциюот пользователя?Без установки User в объект MyForm?

Пожалуйста, помогите.

1 Ответ

2 голосов
/ 07 октября 2011

из Spring Webflow Documentation :

  • Существует два способа программной проверки модели.Во-первых, реализовать логику проверки в вашем объекте модели.Второе - реализовать внешний валидатор.Оба способа предоставляют вам ValidationContext для записи сообщений об ошибках и доступа к информации о текущем пользователе .

Просто создайте открытый метод с именем validate${state}, где${state} - это идентификатор вашего состояния просмотра, в котором вы хотите запустить проверку (в вашем примере):

<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
     ...
}

A 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) 
...