在Spring Webflow中验证之前的评估方法

问题描述 投票:6回答:2

Webflow允许您通过流中的<on-entry>元素执行特定的表达式。

但是在webflow尝试验证页面之前,有可能以某种方式评估表达式吗?

validation spring-webflow
2个回答
3
投票

您可能使用的一个技巧是在验证方法的开头添加必要的逻辑,如下所示(来自参考指南的示例):

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

2
投票

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>

Web流验证方法可以采用MessageContext或ValidationContext。如果验证方法采用validationContext,我不确定如何从Web Flow访问validationContext手动触发。

© www.soinside.com 2019 - 2024. All rights reserved.