Java Don';我不知道如何查找ByRole以返回自定义的用户列表
我正在尝试根据角色列出应用程序中的用户。我的控制器中有一个端点,它试图调用我的userService class.findByRoles方法,但我不知道如何在不将角色作为字符串的情况下放置我想要的角色(行不通) adminController.java方法:Java Don';我不知道如何查找ByRole以返回自定义的用户列表,java,spring,Java,Spring,我正在尝试根据角色列出应用程序中的用户。我的控制器中有一个端点,它试图调用我的userService class.findByRoles方法,但我不知道如何在不将角色作为字符串的情况下放置我想要的角色(行不通) adminController.java方法: @GetMapping(path="/users") public String showUsers( Model model){ var userList = (List<User>) userSe
@GetMapping(path="/users")
public String showUsers( Model model){
var userList = (List<User>) userService.findByRoles("ROLE_TEACHER"); // dont know how to pass a role here
model.addAttribute("userList", userList);
return "users";
}
@Override
public User findByRoles(Role role) {
return userRepository.findByRoles(role);
}
关于如何解决这个问题,有什么建议吗?在对这些类进行调整之后,我认为解决这个问题最合理的方法是使用roleRepository方法findByName。此外,在userRepository、IUserService和UserService中创建了findAllByRoles以返回列表(查看我对这个答案的评论) 将IUserService.java更改为:
public interface IUserService {
User registerNewUserAccount(UserDto userDto);
List<User> findAll();
Optional<User> findById(Long id);
List<User> findAllByRoles(String roles); //Added this new method (VERY IMPORTANT for returning multiple users)
User findByRoles(String roles);
public void delete(Long id);
public User updateConfirmed(Long id);
}
公共接口IUserService{
用户注册Wuseraccount(UserDto UserDto);
列出findAll();
可选的findById(长id);
List findAllByRoles(字符串角色);//添加了这个新方法(对于返回多个用户非常重要)
用户findByRoles(字符串角色);
公共无效删除(长id);
公共用户更新已确认(长id);
}
将UserService.java方法更改为:
@Override
public User findByRoles(String roles) {
return userRepository.findByRoles(roleRepository.findByName(roles)); // Using roleRepository here
}
// Added below findAllbyRoles to return a list
@Override
public List<User> findAllByRoles(String roles){
return userRepository.findAllByRoles(roleRepository.findByName(roles));
}
@GetMapping(path="/users")
public String showUsers( Model model){
List<User> userList = userService.findAllByRoles("ROLE_STUDENT");
userList.addAll(userService.findAllByRoles("ROLE_TEACHER"));
model.addAttribute("userList", userList);
return "users";
}
@覆盖
公共用户findByRoles(字符串角色){
返回userRepository.findByRoles(roleRepository.findByName(roles));//在此处使用roleRepository
}
//在findAllbyRoles下面添加以返回列表
@凌驾
公共列表findAllByRoles(字符串角色){
返回userRepository.findAllByRoles(roleRepository.findByName(roles));
}
将adminController.java方法更改为:
@Override
public User findByRoles(String roles) {
return userRepository.findByRoles(roleRepository.findByName(roles)); // Using roleRepository here
}
// Added below findAllbyRoles to return a list
@Override
public List<User> findAllByRoles(String roles){
return userRepository.findAllByRoles(roleRepository.findByName(roles));
}
@GetMapping(path="/users")
public String showUsers( Model model){
List<User> userList = userService.findAllByRoles("ROLE_STUDENT");
userList.addAll(userService.findAllByRoles("ROLE_TEACHER"));
model.addAttribute("userList", userList);
return "users";
}
@GetMapping(path=“/users”)
公共字符串showUsers(模型){
List userList=userService.findAllByRoles(“角色学生”);
userList.addAll(userService.findAllByRoles(“角色教师”);
model.addAttribute(“userList”,userList);
返回“用户”;
}
我遇到了另一个问题。在本例中,userList实际上根本不是一个列表。它是一个单一的用户。如果有一个用户被分配到角色\教师,它将工作,但如果有多个用户共享该角色,它将中断。现在已修复,请编辑答案以包含修复。
@Override
public User findByRoles(String roles) {
return userRepository.findByRoles(roleRepository.findByName(roles)); // Using roleRepository here
}
// Added below findAllbyRoles to return a list
@Override
public List<User> findAllByRoles(String roles){
return userRepository.findAllByRoles(roleRepository.findByName(roles));
}
@GetMapping(path="/users")
public String showUsers( Model model){
List<User> userList = userService.findAllByRoles("ROLE_STUDENT");
userList.addAll(userService.findAllByRoles("ROLE_TEACHER"));
model.addAttribute("userList", userList);
return "users";
}