Весенний веб-поток | Различные методы проверки для каждого перехода

В настоящее время у меня есть приложение Spring Webflow, которое использует Webflow + Ajax.

У меня есть состояние просмотра под названием «A», которое имеет несколько переходов.

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

Проблема в том, что каждый переход должен проверять только часть «myClass», а не все. По умолчанию Spring Webflow имеет единственный метод проверки.

В основном мне нужно вызывать другой метод проверки для каждого перехода вместо одного.

Это возможно? Есть идеи, как это сделать?

Заранее спасибо!!!


person Agustin Lopez    schedule 16.11.2011    source источник


Ответы (2)


Почему бы не использовать один ValidationClass для состояния просмотра? Вы можете получить событие, которое запускает проверку, позвонив

public String getUserEvent();

в контексте проверки. Затем, в зависимости от результата, делайте все, что хотите проверить.

person tarts    schedule 16.11.2011
comment
Справочное руководство ebflow пишет: ValidationContext ValidationContext позволяет получить MessageContext для записи сообщений во время проверки. Он также предоставляет информацию о текущем пользователе, такую ​​как сигнализируемое userEvent и идентификатор текущего пользователя Principal. Эту информацию можно использовать для настройки логики проверки на основе того, какая кнопка или ссылка была активирована в пользовательском интерфейсе или кто прошел проверку подлинности. ссылка< /а> - person tarts; 16.11.2011
comment
Кажется, это работает. Большое Вам спасибо. Я проверю это, и я дам вам знать, если это так! - person Agustin Lopez; 16.11.2011

Можно использовать атрибут с именем validatorMethod, чтобы указать конкретный метод для вызова валидатора, как описано здесь. Вот модифицированный пример из 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.

person laz    schedule 16.11.2011
comment
Я думаю, что это работает для предыдущей версии Spring Webflow, но не для 3. Первый ответ сработал. В любом случае спасибо. - person Agustin Lopez; 21.11.2011