Оценка методов перед проверкой в ​​Spring Webflow

Webflow позволяет выполнять определенные выражения через элемент <on-entry> в потоке.

Однако можно ли как-то оценить выражение ДО того, как веб-поток попытается проверить страницу?


person beatupunit    schedule 09.11.2010    source источник


Ответы (2)


Один трюк, который вы можете использовать, — это добавить необходимую логику в начало вашего метода проверки, что-то вроде этого (пример из справочного руководства):

<view-state id="enterBookingDetails" model="booking">
    <transition on="proceed" to="reviewBooking">
</view-state>

public class Booking {
    private Date checkinDate;
    private Date checkoutDate;
    ...

    public void validateEnterBookingDetails(ValidationContext context) {
        // do whatever you want to do before attemting validation
        ...

        // now do validation
        ...
    }
}
person klr8    schedule 21.09.2012
comment
Разве сигнатура метода проверки не заблокирована веб-потоком? Что делать, если вам нужно передать другие данные? - person stephen.hanson; 02.02.2013
comment
При таком подходе дизайн не будет хорошим сочетанием проверки и бизнес-обработки. - person abhi; 09.09.2015

Проблема с ответом klr8 заключается в том, что у вас нет никакой информации, кроме validationContext, переданной в валидатор. Если вам нужна другая информация из вашего потока, вы можете попробовать запустить проверку вручную:

<transition on="submit" to="isValid" validate="false">
    <evaluate expression="someLogicIWantToDo(a,b,c)" />
    <evaluate expression="booking.validate(bookingForm, messageContext)"/>
</transition>

<decision-state id="isValid">
    <if test="messageContext.hasErrorMessages()" then="home" else="page2"/>
</decision-state>

Методы проверки веб-потока могут принимать либо MessageContext, либо ValidationContext. Я не уверен, как получить доступ к validationContext из Web Flow для ручного запуска, если ваши методы проверки принимают validationContext.

person stephen.hanson    schedule 02.02.2013