Отобразить ошибки проверки в 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 состоит в том, что вы помещаете каждую ошибку, которую вы получаете из списка (которую вы помещаете в обработчик ошибок проверки), в обычные ошибки проверки, а не в глобальные ошибки. Это позволяет им сохранять поле, в котором они находятся. относится к.)

Другие вопросы по тегам