лучший способ кормить список - PullRequest
1 голос
/ 04 января 2012

С аннотацией ModelAttribute мы можем подавать многие вещи, такие как listbox.

Лучше ли кормить каждый lisbox различным методом в контроллере или использовать форму и иметь список объектов для каждого списка?

1 Ответ

0 голосов
/ 04 января 2012

Если класс контроллера используется для разных запросов, где у некоторых есть эти списки, а у некоторых нет (например, контроллер обрабатывает функции показа, создания и обновления для объекта, где только списки создания и обновления имеют эти списки)тогда заполнение модели аннотированным методом @ModelAttribute будет означать, что эти методы будут выполняться, даже если их значения не нужны.- По моему скромному мнению, это было бы плохо.

Надеюсь, я правильно понял ваш вопрос, если нет, то добавьте пример для каждого из двух вариантов, которые вы хотите сравнить.

@RequestMapping("/users")
@Controller
TheWayIPreferController() {

@RequestMapping(params = "form", method = RequestMethod.GET)
public ModelAndView createForm() {
  ModelMap uiModel = new ModelMap();
  uiModel.addAttribute("userCreateCommand", new UserCreateCommand());
  uiModel.addAttribute("securityRoles", this.securityRoleDao.readAll()));
  uiModel.addAttribute("salutations", this.salutationDao.readAll()));
  uiModel.addAttribute("locales", this.localeDao.readAll());
  return new ModelAndView("users/create", uiModel);
}

@RequestMapping(method = RequestMethod.POST)
public ModelAndView create(final @Valid UserCreateCommand userCreateCommand, final BindingResult bindingResult) {
...
}


@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public ModelAndView show(@PathVariable("id") final User user) {
...
}
}

вместо:

@RequestMapping("/users")
@Controller
TheWayIDiscourageController(){


@ModelAttribute("securityRoles")
public List<SecurityRoles> getSecurityRoles(){
   return this.securityRoleDao.readAll();
}

@ModelAttribute("salutations")
public List<SecurityRoles> getSalutations(){
   return this.salutationDao.readAll());
}

@ModelAttribute("locales")
public List<SecurityRoles> getLocals(){
   return this.localeDao.readAll();
}

@RequestMapping(params = "form", method = RequestMethod.GET)
public ModelAndView createForm() {
  return new ModelAndView("users/create", "userCreateCommand", new UserCreateCommand());
}

@RequestMapping(method = RequestMethod.POST)
public ModelAndView create(final @Valid UserCreateCommand userCreateCommand, final BindingResult bindingResult) {
...
}

@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public ModelAndView show(@PathVariable("id") final User user) {
...
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...