Spring-MVC: как я могу отображать ошибки при использовании AbstractCommandController? - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть запросы ajax, которые приходят в мой контроллер, и моя проверка работает отлично. В контроллере я вызываю страницу сбоя JSP, если есть сбой. Единственная проблема заключается в том, что я понятия не имею, как я могу вывести ошибки пользователю на странице fail.jsp. У меня нет доступа к тегам формы весны. Что вы должны сделать в этом сценарии?

Изменить: все, что я действительно хочу знать, это как я могу получить доступ к ошибкам привязки на странице JSP, когда я использую AbstractCommandController.

Ответы [ 2 ]

2 голосов
/ 28 февраля 2011

В прошлом я использовал HTTP-заголовки для отправки сообщений реквестеру AJAX (объект XMLHTTPRequest).Таким образом, вы не получите полную поддержку привязки и проверки, но это простой способ передачи сообщений.

Другой вариант, который даст вам полную силу привязки и проверки Spring, заключается в следующем.Я предполагаю, что вы отправляете форму через AJAX.Вы можете выполнить стандартную пружинную привязку и проверку, а в случае ошибки отправить обратно и заменить форму сообщениями об исключениях рядом с вводом проблемы.Таким образом, вы можете использовать всю мощь связывания и проверки Spring, получая при этом AJAX-совершенство, которое вам нужно.Это потребует от вас разделения вашей формы на отдельную страницу JSP, чтобы вы могли просто вернуть эту форму при отправке и ошибке AJAX.

В ответ на комментарий

Моя проблема простокак получить доступ к BindingErrors из JSP, если я использую AbstractCommandController.Аякс на самом деле не так важен в уравнении.Я просто не хотел использовать formController, потому что это не имело смысла.

Я думаю вы можете просто установить переменную в вашей модели следующим образом:

ModelAndView.addObject(this.getCommandName(), errors)

Это будет сделано в методе AbstractCommandController

protected abstract ModelAndView handle(
        HttpServletRequest request,
        HttpServletResponse response,
        Object command,
        BindException errors)
    throws Exception

.Убедитесь, что имя атрибута модели соответствует имени вашей команды (задается в методе setCommandName).

Это не проверено и из памяти.

0 голосов
/ 28 февраля 2011

Вы можете проверить объект BindException на наличие ошибок (а также перехватить и обработать исключения) и вернуть информацию о них в ответ Ajax.Если вы используете JSON, вы можете связать список информации об ошибках с ключом «ошибки».После этого клиенту потребуется проверить и отобразить эти ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...