Java 当验证失败时,如何使WebFlow中止转换并仅查看上一页?

Java 当验证失败时,如何使WebFlow中止转换并仅查看上一页?,java,validation,spring-webflow,Java,Validation,Spring Webflow,我有一个SpringWebFlow应用程序,它会让我头发变白。如果验证成功,我要做的就是简单地用不同的数据显示相同的视图。这很有效。但是,当输入无效数据时,我想显示上一个视图,但预填充了错误值,并且错误消息告诉我的用户如何修复上述错误。但是,无论验证是否成功,应用程序仍然会在渲染时执行中的内容。由于这些值无效,它会使我的应用程序崩溃。只有在验证成功时,我如何才能在渲染时执行操作 我的视图状态配置看起来有点像这样: <view-state id="mine" model="myModel"&

我有一个SpringWebFlow应用程序,它会让我头发变白。如果验证成功,我要做的就是简单地用不同的数据显示相同的视图。这很有效。但是,当输入无效数据时,我想显示上一个视图,但预填充了错误值,并且错误消息告诉我的用户如何修复上述错误。但是,无论验证是否成功,应用程序仍然会在渲染时执行
中的内容。由于这些值无效,它会使我的应用程序崩溃。只有在验证成功时,我如何才能在渲染时执行
操作

我的视图状态配置看起来有点像这样:

<view-state id="mine" model="myModel">
    <var name="myModel" class="com.examplelMyModel" />
    <on-entry>
         <set name="foo" value="bar" />
    </on-entry>
    <on-render>
        <set name="requestScope.stuff" value="stuffService.loadStuff( ... )" />
        <set name="viewScope.otherStuff" value="otherStuffService.loadOtherStuff( requestScope.stuff, myModel.a, myModel.b )" />
    </on-render>
    <transition on="reloadMine" validate="true"/>
</view-state>

}

当页面实际被流式传输回用户时,将调用渲染上的。为了能够显示任何验证错误,必须重新呈现页面,然后调用render。你不能把这两套放在入口标签里吗?

是的!成功了!我花了一整天的时间都没弄明白(我没写的应用程序和webflow新手),所以这真的很有帮助。非常感谢你!
public class MyModelValidator{

  ...

    public void validateMine(MyModel myModel, ValidationContext context) {
        Locale currentLocale = LocaleContextHolder.getLocale();

        MessageContext messages = context.getMessageContext();
        DateTime a= new DateTime(myModel.getA());
        DateTime a = new DateTime(myModel.getB()); 
        DateTime now = new DateTime();

        if(a.isAfter(now) || b.isAfter(now)){
            messages.addMessage(new MessageBuilder().error().defaultText(messageSource.getMessage("ohno", null, currentLocale)).build());
        }
    }
}