Я нашел ответ на свой вопрос и решил проблему. Я хочу поделиться этим здесь.
Плохо, что я не знал, что порядок параметров имеет важное значение, особенно когда мы используем параметр BaindingResult в контроллере. Объект BindingResult - получение ранее объявленного объекта в списке параметров. Другими словами. Как видно из скриншота вопроса, изображение. Метод saveStatusSchedule()
имеет порядок параметров: DriverHistory driverHistory, Driver driver, BindingResult bindingResult
@RequestMapping(value = "/saveStatusSchedule", method = RequestMethod.POST)
public ModelAndView saveStatusSchedule(DriverHistory driverHistory,
Driver driver,
BindingResult bindingResult)
В этом случае BindingResult получает Driver
в качестве целевого объекта для последующей проверки его полей. Если мне нужно проверить поля объекта DriverHistory
, мне нужно переместить параметр BindingResult bindingResult
после DriverHistory driverHistory
, например:
@RequestMapping(value = "/saveStatusSchedule", method = RequestMethod.POST)
public ModelAndView saveStatusSchedule(DriverHistory driverHistory,
BindingResult bindingResult,
Driver driver)
Итак, если вы используете более одного объекта в качестве параметров в методе Contoller и используете BindingResult для проверки этих объектов, позаботьтесь о порядке параметров
Извините за многие слова ,
Решение пришло в голову из подсказки, которую я посмотрел в "ru" версии stackoverflow
https://ru.stackoverflow.com/questions/475310/%d0%9f%d1%80%d0%be%d0%b1%d0%bb%d0%b5%d0%bc%d1%8b-%d1%81-%d0%b2%d0%b0%d0%bb%d0%b8%d0%b4%d0%b0%d1%86%d0%b8%d0%b5%d0%b9-%d0%bd%d0%b0-spring-boot-oval/475365#475365