我有一个 Spring WebFlow 应用程序,导致我白发苍苍。如果验证成功,我想要完成的是简单地显示具有不同数据的相同视图。这行得通。但是,当输入无效数据时,我想显示以前的视图,但预先填充了错误值,并且错误消息告诉我的用户如何修复上述错误。但是,无论验证是否成功,应用程序仍然会在on-render
. 由于这些值无效,它会使我的应用程序崩溃。on-render
只有在验证成功时我才能做这些事情?
我的视图状态配置看起来有点像这样:
<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>
我的验证器如下所示:
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());
}
}
}
}