У меня есть проект Subversion, у которого есть репозиторий и ствол
, теги
, ветви
элементы верхнего уровня. Для этого проекта trunk
содержит папки для больших частей, таких как 'common', 'libs', 'core', 'help', 'install', ' В случае успеха проверки я пытаюсь просто показать одно и то же представление с разными данными. Это работает. Однако, когда вводятся недопустимые данные, я хочу показать предыдущее представление, но с предварительно заполненными ошибочными значениями и сообщениями об ошибках, сообщающими моему пользователю, как исправить ошибку выше. Однако, независимо от того, прошла ли проверка успешно или нет, приложение все равно выполняет работу внутри при рендеринге
. Поскольку значения недействительны, мое приложение вылетает из строя. Как я могу выполнять операции при рендеринге
только после успешной проверки?
Моя конфигурация состояния просмотра выглядит примерно так:
<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());
}
}
}
}