【发布时间】:2011-05-07 09:21:44
【问题描述】:
Webflow 允许您通过流中的<on-entry> 元素执行特定的表达式。
但是,是否有可能在 webflow 尝试验证页面之前以某种方式评估表达式?
【问题讨论】:
Webflow 允许您通过流中的<on-entry> 元素执行特定的表达式。
但是,是否有可能在 webflow 尝试验证页面之前以某种方式评估表达式?
【问题讨论】:
您可以使用的一个技巧是在验证方法的开头添加必要的逻辑,如下所示(参考指南中的示例):
<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
...
}
}
【讨论】:
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 以手动触发。
【讨论】: