В моих моделях я использую числовые типы данных, такие как Long, Integer и т. Д. Когда я их создаю, но поставляю String, он выводит трассировку стека исключений, в том числе NumberFormatException. Как я могу правильно обернуть это, чтобы пользовательский интерфейс не видел трассировку стека исключений?Spring MVC: Предотвращение исключений при привязке атрибута модели
ответ
Вы должны иметь BindingResult
аргумент сразу после аргумент команды (с @Value
аннотацию) в контроллере. Затем вы можете проверить bindingResult
и решить, что делать с вещами, которые не могут быть связаны.
Если у вас есть аргумент BindingResult
, тогда метод контроллера вызывается, даже с ошибкой привязки, и вы должны сами обрабатывать ошибку.
Как правило, это будет выглядеть немного как этот пример (создать пользователя или вновь создать визуализации страницы пользователя):
@RequestMapping(method = RequestMethod.POST)
public ModelAndView create(@Valid UserCreateCommand userCreateCommand,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
//or some of your handling for bindingResult errors
return new ModelAndView("user/create", userCreateCommand", userCreateCommand);
} else {
...
}
}
Но как разграничить обычные ошибки проверки vs. проверки ошибки, возникающие из-за ошибки NumberFormatException?
BindingResult
имеет несколько методов, чтобы получить FieldErrors
, например BindingResult.getFieldErrors()
. и FieldError
обладает свойством boolean isBindingFailure()
Ральф, я использую bindingResult.hasErrors для проверки ошибок проверки. Но как я могу отличить обычные ошибки проверки от ошибок проверки, возникающие из-за ошибки NumberFormatException? –
BindingResult.getFieldErrors(). Get (i) .isBindingFailure() – Ralph
Если и хотите отобразить специальное сообщение для этого исключения и должны настроить Spring использовать message.properties файл и указать сообщение «typeMismatch.className.propertyName» или глобальное сообщение для typeMismatch.
Например (Spring 3.2): В сервлета-config.xml
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource"
p:basename="classpath:messages/messages">
</bean>
В SRC/основные/ресурсы/сообщения/messages.properties
typeMismatch = Invalid data format!
В контроллере:
public String addObject(@Valid @ModelAttribute("objectForm")
ObjectForm objectForm, BindingResult result, Model model)
{
if (result.hasErrors())
{
return "/addObject";
}
//...
}
В jsp:
<form:errors path="propertyName" cssClass="divErrorsServer" element="div" />
Вы также можете использовать:
System.out.println(result.getAllErrors());
Чтобы узнать, какие коды вы можете добавить в файл сообщений для этой ошибки.
Например, когда я использовал строки на private Double weight
поле я получил эти коды:
[typeMismatch.objectForm.weight,
typeMismatch.weight,
typeMismatch.java.lang.Double,
typeMismatch]
- 1. ASP.NET MVC: типы, применяемые при привязке модели
- 2. Значение атрибута модели Spring MVC не отображается
- 3. Значение атрибута модели Spring MVC не печатается
- 4. Spring MVC jackson обработка исключений
- 5. модели Логическое значение атрибута не отображается в HTML (Spring MVC)
- 6. Реверс дня и месяца при привязке модели MVC
- 7. Каковы требования типа коллекции при привязке модели?
- 8. Spring MVC - параметр атрибута модели не обновляется в GET
- 9. Spring MVC testing: Как проверить, нет ли атрибута модели?
- 10. java.lang.NumberFormat Исключение исключений при запуске Spring mvc project
- 11. Spring-MVC Обработчик исключений возвращается OK при записи в ответ
- 12. Объект модели Spring Spring MVC в jquery
- 13. Регистрация необработанных исключений в Spring Mvc Java
- 14. Spring Portlet MVC - как уловить отображения исключений
- 15. spring mvc обработчик исключений с @RequestBody
- 16. Обработка исключений в Spring MVC не достигли
- 17. Backbone.js Ошибка при привязке модели к виду
- 18. Получение ошибки при привязке к модели
- 19. Тестирование атрибута модели в Spring Boot Controllers
- 20. Spring Обработка исключений: org.springframework.beans.factory.CannotLoadBeanClassException
- 21. Атрибут атрибута привязки Spring MVC при вводе формы
- 22. Проблема с Spring MVC, обновляющая атрибут модели
- 23. spring mvc Ошибка поля в привязке привязки объекта
- 24. Spring MVC не заполняет атрибут модели
- 25. Spring MVC: Как сохранить атрибуты модели при ошибках проверки весны?
- 26. 400 Плохой запрос при проверке Атрибут модели с Spring MVC
- 27. При привязке атрибута модели привязки к текстовому полю ввода он сбой в IE
- 28. Предотвращение XSS весной MVC
- 29. Есть ли способ поднять PropertyChanged при привязке к модели?
- 30. Вопрос о привязке в asp.net mvc?
Используйте 'try..catch' блок – Jens
Jens, вы имеете в виду в сеттер этого свойства я использую попробовать поймать? –
Да, вот что я имею в виду. – Jens