【问题标题】:Evaluating methods prior to validation in Spring Webflow在 Spring Webflow 中验证之前评估方法
【发布时间】:2011-05-07 09:21:44
【问题描述】:

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

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

【问题讨论】:

    标签: validation spring-webflow


    【解决方案1】:

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

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

    【讨论】:

    • validate方法的方法签名不是被web flow锁住了吗?如果需要传入其他数据怎么办?
    • 在这种方法中,设计不能很好地混合验证和业务处理
    【解决方案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 以手动触发。

    【讨论】:

      猜你喜欢
      • 2013-11-02
      • 2020-09-26
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多