Я использую следующий код для привязки пользователей к модели [для использования в view / jsp]:
@ModelAttribute("users")
public Collection<User> populateUsers() {
return userService.findAllUsers();
}
Но иногда мне просто нужно загрузить несколько пользователей с определенной ролью, которую я пытаюсь использовать, используя следующий код:
int role = 2; //this is being set in a Controller within a method @RequestMapping(method = RequestMethod.GET) public String list(
@ModelAttribute("users")
public Collection<User> populateUsers() {
if(role == 2)
return userService.findAllUsersByRole(role);
else
return userService.findAllUsers();
}
но populateUsers всегда вызывается в начале контроллера, прежде чем роль будет установлена в методе list. Не могли бы вы помочь мне с тем, как установить пользователей [что-то вроде позднего связывания]
Привет
- добавление кода
@Controller
@RequestMapping("/users")
public class UserController {
@Autowired
UserService userService;
@RequestMapping(method = RequestMethod.POST)
public String create(@Valid User user, BindingResult bindingResult,
Model uiModel, HttpServletRequest httpServletRequest) {
if (bindingResult.hasErrors()) {
uiModel.addAttribute("user", user);
addDateTimeFormatPatterns(uiModel);
return "users/create";
}
uiModel.asMap().clear();
userService.saveUser(user);
return "redirect:/users/"
+ encodeUrlPathSegment(user.getId().toString(),
httpServletRequest);
}
@RequestMapping(params = "form", method = RequestMethod.GET)
public String createForm(Model uiModel) {
uiModel.addAttribute("user", new User());
addDateTimeFormatPatterns(uiModel);
return "users/create";
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public String show(@PathVariable("id") Long id, Model uiModel) {
addDateTimeFormatPatterns(uiModel);
uiModel.addAttribute("user", userService.findUser(id));
return "users/show";
}
@RequestMapping(value = "/{id}", params = "form", method = RequestMethod.GET)
public String updateForm(@PathVariable("id") Long id, Model uiModel) {
uiModel.addAttribute("user", userService.findUser(id));
addDateTimeFormatPatterns(uiModel);
return "users/update";
}
@ModelAttribute("users")
public Collection<User> populateUsers() {
return userService.findAllUsers();
}
@ModelAttribute("userroles")
public Collection<UserRole> populateUserRoles() {
return Arrays.asList(UserRole.class.getEnumConstants());
}
void addDateTimeFormatPatterns(Model uiModel) {
uiModel.addAttribute(
"user_modified_date_format",
DateTimeFormat.patternForStyle("M-",
LocaleContextHolder.getLocale()));
}
}
@ PathVariable ("id") Длинный идентификатор - это идентификатор, который мне требуется в populateUsers, надеюсь, он понятен.