Тег Spring MVC <form: errors /> не находит сообщений об ошибках - PullRequest
6 голосов
/ 01 сентября 2009

Я работаю с фронтенд-разработчиком, который пишет файлы JSP. У нас есть форма, которая работает правильно, за исключением того, что ошибки валидации / привязки / обработки не могут отображаться с тегом <form:errors/> в Spring.

Я подтвердил, что ошибка устанавливается, и каков, по-видимому, правильный путь для ошибок. Предположительно <form:errors path="*" /> должен отображать их все, независимо от пути, но ничего не показывает.

Нужно ли мне входить в источник библиотеки тегов, чтобы понять, что происходит не так?

Ответы [ 6 ]

16 голосов
/ 26 мая 2010

2 вещи, которые я обнаружил.

1) убедитесь, что вы указали имя объекта формы / команды в теге формы

<form:form method="post" enctype="multipart/form-data" commandName="salesOrder">

2) убедитесь, что вы называете объект формы-компонента / команды по имени класса. В приведенном выше примере мой класс com.abc.xyz.SalesOrder. Если я назову это «так» или «порядок» в модели, то ошибки не будут отображаться.

14 голосов
/ 05 сентября 2009

Простой ответ: должен находиться в элементе для привязки к объекту "command" модели.

3 голосов
/ 15 июня 2011

Вопрос - Почему «form: error path =« xyzProperty »не печатает ошибку на jsp?

Ответ -

  1. BindingResult имеет свойство objectName, которое связывает список ошибок с commandName в вашем jsp.

  2. Defualt objectName = имя вашего объекта. Например, если имя класса MyCareerFB, то objectName = myCareerFB. Запомните первый символ в маленьком регистре, это соответствует соглашению об именах бинов.

  3. Сохраните значение commandName в jsp так же, как objectName, иначе ошибка не будет связана с объектом, и jsp никогда не напечатает сообщение об ошибке.

2 голосов
/ 05 января 2011

Это только для потомков, видя, что ответ уже принят. У меня были те же симптомы, но проблема для меня заключалась в том, что значение атрибута метода form: form чувствительно к регистру: то есть method = "post" не будет отображать ошибок, а method = "POST" будет работать нормально. Особо следует отметить, что все работало так, как ожидалось. Представление формы отображалось так, как ожидалось, поскольку проверка не удалась ИСКЛЮЧИТЬ , что ошибки не были видны в окончательной версии JSP.

Это поведение будет существовать на любом контроллере, который расширяет AbstractFormController, так как

protected boolean isFormSubmission(HttpServletRequest request)

делает "POST" .equals вместо "POST" .equalsIgnoreCase.

1 голос
/ 19 ноября 2010

Не знаю, была ли у меня такая же проблема. Моя проблема заключалась в том, что я установил неправильное значение для @ModelAttribute. Установив значение commandName для , работает нормально.

0 голосов
/ 26 февраля 2015

Возможно, вы не использовали правильное соглашение об именах для атрибута формы commandName. Это была проблема, с которой я столкнулся. У меня был класс с именем "XYZTask", и я назвал форму commandName = "xyztask". Все отображение формы работало, кроме того, что я не видел ошибок, сообщенных тегом. Я переименовал свой класс в "XyzTask" и в форму commandName = "xyzTask", и ошибки начали работать.

...