简体   繁体   English

当从jsp组合表单对象时,Spring mvc缺少依赖集合的id

[英]Spring mvc miss id of dependent collection when combine form object from jsp

I have following controller to return view: 我有以下控制器返回视图:

@RequestMapping(value = "/admin/adminUsers", method = RequestMethod.GET)
    public String adminUsers(ModelMap model, HttpSession session) {
        Set<TerminalAdmin> users = terminalAdminService.getAllAdmins();
        session.setAttribute("users", users);
        model.addAttribute("adminRoles", terminalAdminService.findAllAdminRoles());
        model.addAttribute("terminalAdmin", new TerminalAdmin());
        model.addAttribute("generatedPassword", PasswordUpdateStatus.generatePassword());
        return "admin/adminUsers";
    }

terminalAdminService.findAllAdminRoles()

returns collection with ids: 返回带有id的集合:

在此输入图像描述

On jsp I render it like this: 在jsp上我渲染它像这样:

<form:form modelAttribute="terminalAdmin" action="/admin/addNewAdmin">
    ...
    <form:checkboxes items="${adminRoles}" path="adminRoles"/>
    ...
</form:form>

I have the follwing controller to accept this object: 我有以下控制器来接受这个对象:

@RequestMapping(value = "/admin/addNewAdmin")
    public String adminUsers(@ModelAttribute @Valid TerminalAdmin terminalAdmin...){
      ....
}

In debug I see that terminalAdmin comes with adminRoles without ids. 在调试中我看到terminalAdmin带有adminRoles而没有id。

在此输入图像描述

How to fix this? 如何解决这个问题?

PS PS

It is continue of Dependent collection duplicates when I save entity 当我保存实体时,它是Dependent collection重复的继续

i prefer to use Converters , because for me it's cleaner 我更喜欢使用转换器 ,因为对我来说它更干净

you should have something like the following: 你应该有类似以下的东西:

public class StringToAdminRoleConverter implements Converter<String, AdminRole> {

    @Autowired
    TerminalAdminService terminalAdminService;

    @Override
    public AdminRole convert(String role) {
        return terminalAdminService.findRoleByName(role);
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM