Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取所选下拉列表(Thymeleaf)_Java_Spring Mvc_Spring Boot_Thymeleaf - Fatal编程技术网

Java 获取所选下拉列表(Thymeleaf)

Java 获取所选下拉列表(Thymeleaf),java,spring-mvc,spring-boot,thymeleaf,Java,Spring Mvc,Spring Boot,Thymeleaf,我用一些信息创建了一个用户,包括角色,我去获取一个预先选择的用户角色下拉列表进行修改。现在我可以修改它,但无法获取该用户的角色列表,在视图a中,所有角色都存储在数据库中 有人能帮我解决吗 这是获取角色列表的my thymeleaf代码: 我的控制器: @RequestMapping(value = "/users/edit/{userId}", method = RequestMethod.POST) public RedirectView modifyUser(@PathVaria

我用一些信息创建了一个用户,包括角色,我去获取一个预先选择的用户角色下拉列表进行修改。现在我可以修改它,但无法获取该用户的角色列表,在视图a中,所有角色都存储在数据库中

有人能帮我解决吗 这是获取角色列表的my thymeleaf代码:


我的控制器:

@RequestMapping(value = "/users/edit/{userId}", method = RequestMethod.POST)
    public RedirectView modifyUser(@PathVariable String userId, @ModelAttribute(value = "user") UserDto userto,
            Model model) {

        Integer valueUserId;
        try {
            valueUserId = Integer.parseInt(userId);
        } catch (NumberFormatException e) {
            return new RedirectView("/error");
        }
        UserDto user = userProvider.getUserById(valueUserId);
        String pass = user.getPassword();
        BeanUtils.copyProperties(userto, user);
        user.setIdUser(valueUserId);
        user.setPassword(pass);

        return userProvider.modifyUser(user) ? new RedirectView("/users") : new RedirectView("/error");
    }
我的角色控制器:

@RequestMapping(value = "/roles", method = RequestMethod.GET)
    public ModelAndView getRoles(Model modelUser){

        UserDto user = userService.getLoggedUser();
        List<String> userRoles = user.getRole(); 
        ModelAndView model = new ModelAndView("role/roles");
        }
        modelUser.addAttribute("userRoles", userRoles);

        List<RoleDto> roles =roleProvider.getRoles();   
        model.addObject("roles",roles);
        model.addObject("userRoles", userRoles);
        return model;
    }

    @RequestMapping(value = "/roles/edit/{roleId}", method = RequestMethod.GET)
    public ModelAndView getRole(@PathVariable String roleId){
        Integer valueRoleId;
        try{
            valueRoleId = Integer.parseInt(roleId);
        }
        catch (Exception e){
            return new ModelAndView("error");
        }

        RoleDto role = roleProvider.getRoleById(valueRoleId);
        ModelAndView model;

        if (role == null){
            model = new ModelAndView("error");
        }
        else{
            model = new ModelAndView("role/rolemodify");
            model.addObject("role",role);
            model.addObject("path","/roles/edit/"+role.getIdRole());
        }
        return model;
    }
@RequestMapping(value=“/roles”,method=RequestMethod.GET)
公共模型和视图getRoles(模型模型用户){
UserDto user=userService.getLoggedUser();
List userRoles=user.getRole();
ModelAndView模型=新的ModelAndView(“角色”);
}
addAttribute(“用户角色”,用户角色);
List roles=roleProvider.getRoles();
model.addObject(“角色”,角色);
addObject(“用户角色”,用户角色);
收益模型;
}
@RequestMapping(value=“/roles/edit/{roleId}”,method=RequestMethod.GET)
公共模型和视图getRole(@PathVariable String roleId){
整数值ROLEID;
试一试{
valueRoleId=Integer.parseInt(roleId);
}
捕获(例外e){
返回新的ModelAndView(“错误”);
}
RoleDto role=roleProvider.getRoleById(valueRoleId);
模型和视图模型;
如果(角色==null){
模型=新模型和视图(“错误”);
}
否则{
模型=新模型和视图(“角色/角色修改”);
model.addObject(“角色”,角色);
model.addObject(“path”,“/roles/edit/”+role.getIdRole());
}
收益模型;
}

您的角色控制器看起来不错。您可以像这样编辑modifyUser方法以将角色添加到模板:

@RequestMapping(value = "/users/edit/{userId}", method = RequestMethod.POST)
public RedirectView modifyUser(@PathVariable String userId, @ModelAttribute(value = "user") UserDto userto,
        Model model) {

    Integer valueUserId;
    try {
        valueUserId = Integer.parseInt(userId);
    } catch (NumberFormatException e) {
        return new RedirectView("/error");
    }
    //new code
    List<RoleDto> roles = roleProvider.getRoles(); //maybe print these in a loop to verify it's getting the roles correctly from the database. 
    model.addAttributes("roles", roles); 

    UserDto user = userProvider.getUserById(valueUserId);
    String pass = user.getPassword();
    BeanUtils.copyProperties(userto, user);
    user.setIdUser(valueUserId);
    user.setPassword(pass);

    return userProvider.modifyUser(user) ? new RedirectView("/users") : new RedirectView("/error");
}
@RequestMapping(value=“/users/edit/{userId}”,method=RequestMethod.POST)
public RedirectView modifyUser(@PathVariable String userId,@ModelAttribute(value=“user”)UserDto userto,
(模型){
整数值用户ID;
试一试{
valueUserId=Integer.parseInt(userId);
}捕获(数字格式){
返回新的重定向视图(“/error”);
}
//新代码
List roles=roleProvider.getRoles();//可以在循环中打印这些角色,以验证它是否正确地从数据库中获取角色。
model.addAttributes(“角色”,角色);
UserDto user=userProvider.getUserById(valueUserId);
字符串pass=user.getPassword();
copyProperties(userto,user);
user.setIdUser(valueUserId);
user.setPassword(pass);
return userProvider.modifyUser(user)?new RedirectView(“/users”):new RedirectView(“/error”);
}
您必须将
@Autowire
您的
角色Provider
插入您的用户控制器


确保您的
RoleDto
类有一个name字段,并且getter是
getName()
。命名约定在spring中很重要

你能分享你控制器的代码吗?看看你是如何将角色传递给百里香叶模板的会很有帮助。我分享了它,谢谢。看起来你并不是在向模型中添加角色。您必须创建列表,然后将其作为名称添加到您的模型中,名称为
“roles”
。它应该看起来像
model.addAttribute(“roles”,roleList)
我创建了一个列表:list roles=user.getRole();我将其添加到模型中:model.addAttribute(“角色”,roles);我得到了同样的结果,您需要创建一个
角色
类,并给它一个
名称
字段。当thymeleaf查找
role.name
时,它实际上是在
role
classallways中查找
getName()
方法。我得到了所有没有预先选择角色的角色列表。我不知道我是否需要更改thymeleaf代码中的某些内容。@Ing\ULT我不知道你的意思是什么?