Отобразить ошибки проверки в Stripes из вызова handleValidationErrors()
Я отправляю запрос с данными формы в ProcessorActionBean для обработки. Произошла ошибка, но ProcessorActionBean не имеет представления JSP - оно предназначено только для обработки данных формы - поэтому я улавливаю ошибки, внедряя ValidationErrorHandler в ProcessorActionBean, а из handleValidationErrors() я перенаправляю его в DisplayerActionBean.
Проблема в том, что ошибка, вызвавшая запуск метода, исчезает после перенаправления. Я могу поместить сообщения, не связанные с ошибками, в контекст, и они будут отображаться на странице DisplayerActionBean, но сообщения об ошибках, похоже, переходят в /dev/null.
Как получить ошибки для отображения тоже?
1 ответ
Решение оказалось:
а) в методе handleValidationErrors() используйте FlashScope, чтобы поместить ошибки проверки в то место, где они будут существовать до следующего запроса:
FlashScope scope = FlashScope.getCurrent(getRequest(), true);
scope.put("your_key",listOfValidationErrors);
б) в перехватчике (я использовал модифицированный ErrorMessageInterceptor), где, если вы найдете некоторые ошибки в your_key
Вы помещаете их в ошибки проверки контекста:
ValidationErrors errors = ctx.getActionBeanContext().getValidationErrors();
errors.add(someError.getFieldName(), someError);
(Существенное отличие от ErrorMessageInterceptor состоит в том, что вы помещаете каждую ошибку, которую вы получаете из списка (которую вы помещаете в обработчик ошибок проверки), в обычные ошибки проверки, а не в глобальные ошибки. Это позволяет им сохранять поле, в котором они находятся. относится к.)