@ModelAttribute в методе

Представьте себе код вроде этого:

@RequestMapping(value="/users", method=RequestMethod.GET)
public String list(Model model) {
    ...
}

@InitBinder("user")
public void initBinder(WebDataBinder binder) {
    binder.setDisallowedFields("password"); // Don't allow user to override the value
}

@ModelAttribute("user")
public User prepareUser(@RequestParam("username") String username){
    ...
}

@RequestMapping(value="/user/save", method=RequestMethod.POST)
public String save(@ModelAttribute("user") User user, Model model) {        
    ...
}

Я использую связыватель инициализации, чтобы избежать привязки поля, и я помечаю метод (prepareUser ()) с помощью @ModelAttribute чтобы подготовить мой объект User перед его привязкой. Поэтому, когда я вызываю / user / save, выполняются initBinder () и prepareUser ().

Я установил "user" как в @InitBinder, так и в @ModelAttribute, чтобы Spring-MVC мог понять, что эти методы следует применять только перед выполнением метод с @ModelAttribute ("user").

Проблема в том, что метод, аннотированный @ModelAttribute ("user"), выполняется перед каждым сопоставленным методом этого контроллера. Например, если я вызываю / users, prepareUser выполняется перед методом list (). Как я могу сделать так, чтобы этот подготовитель выполнялся только до того, как метод save () имеет все методы в одном контроллере?

Спасибо

6
задан Javi 2 December 2010 в 16:22
поделиться