Как работает обработчик отображения весной MVC
Я новичок в весеннем MVC. Я отлаживаю код MVC, как указано ниже
@Controller
@RequestMapping("/register")
public class RegisterController extends BroadleafRegisterController {
@RequestMapping(method=RequestMethod.GET)
public String register(HttpServletRequest request, HttpServletResponse response, Model model,
@ModelAttribute("registrationForm") RegisterCustomerForm registerCustomerForm) {
return super.register(registerCustomerForm, request, response, model);
}
@RequestMapping(method=RequestMethod.POST)
public String processRegister(HttpServletRequest request, HttpServletResponse response, Model model,
@ModelAttribute("registrationForm") RegisterCustomerForm registerCustomerForm, BindingResult errors) throws ServiceException, PricingException {
return super.processRegister(registerCustomerForm, errors, request, response, model);
}
@ModelAttribute("registrationForm")
public RegisterCustomerForm initCustomerRegistrationForm() {
return super.initCustomerRegistrationForm();
}
}
выше класс обработчика пружины. для запроса / регистрации я думал, что должен вызываться метод regsister(), но до вызова этого метода inintcustomerRegistivationForm() я не знаю, почему и как вызывается этот метод. Я искал это в Google, но не нашел никакой полезной информации. Я думаю, что это похоже на метод перехватчика, как в Struts2. Пожалуйста, расскажите нам, как этот метод называется
Спасибо
2 ответа
Согласно весенней документации
Методы @ModelAttribute используются для заполнения модели обычно необходимыми атрибутами, например, для заполнения раскрывающегося списка состояниями или типами животных, или для получения объекта команды, такого как Account, чтобы использовать его для представления данных в HTML-форме. Контроллер может иметь любое количество методов @ModelAttribute. Все такие методы вызываются до методов @RequestMapping того же контроллера.
Это объясняет, почему метод initCustomerRegistrationForm() вызывается перед методами сопоставления запросов.
Вызывается initCustomerRegistrationForm(), потому что это "модель" вашего контроллера. Модель обычно всегда нужна для получения и публикации запроса для конкретной формы и представляет данные, введенные в форму.
Если вы хотите, чтобы ваша форма была предварительно заполнена какими-то данными, вы бы добавили эти данные в "модель". "Модель" - это также то, что отправляется в запрос на публикацию, а затем отправляется форма.