我正在使用以下代码将用户绑定到模型[将在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”)Long id是我在populateUsers中需要的ID,希望它是清楚的。
答案 0 :(得分:1)
如果角色在当前请求中,则此方法将角色绑定到变量角色。
@ModelAttribute("users")
public Collection<User> populateUsers(@RequestParam(required=false) Integer role) {
if(role != null && role == 2)
return userService.findAllUsersByRole(role);
else
return userService.findAllUsers();
}
答案 1 :(得分:0)
在所需方法中设置模型属性已解决了我的问题:
model.addAttribute("users", return userService.findAllUsersByRole(role));
谢谢!