Я выполняю вызов PUT для обновления существующей сущности и отправляю следующее тело запроса:
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes"?>
<campaign xmlns:xlink = "http://www.w3.org/1999/xlink">
<aaaa>123</aaaa>
</campaign>
Сервер отвечает 200 OK, хотя определенно нет свойства «aaaa» в классе POJO, которому сопоставлен ответ. Отладка показывает, что в контроллер передается полностью пустой экземпляр POJO.
Как я могу заставить Spring пожаловаться на это? У нас были пользователи, которые не могли понять, почему обновление не работает, и они просто неправильно написали имя свойства - и не понимали, что сделали ошибку, поскольку получили 200 OK.
Могу я как-нибудь использовать для этого BindingResult? Изменение моего метода контроллера на что-то вроде этого не работает:
public RsCampaign updateCampaign(@Validated @RequestBody RsCampaign rsCampaign, BindingResult bindingResult, ...
Затем Spring жалуется:
java.lang.IllegalStateException: Errors/BindingResult argument declared without preceding model attribute. Check your handler method signature!
Этот вопрос здесь похож, но мне не помогает: @RequestBody не ограничивается типом POJO, а BindingResult всегда имеет ошибки false
Да, пожалуйста! :)
Используйте @Valid вместо @Validated, также каждое поле в RsCampaign должно содержать аннотации проверки, такие как @NotEmpty и т. д.
Я по-прежнему получаю то же исключение (заменил «@ Validated» на «@ Valid» и аннотировал поле в RsCampaign с помощью «@ NotEmpty»)




если тело неверно, не должен ли сервер просто возвращать HTTP-400?