Spring mvc miss id of dependent collection when combine form object from jsp
Asked Answered
A

1

7

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:

enter image description here

On jsp I render it like this:

<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.

enter image description here

How to fix this?

P.S.

It is continue of Dependent collection duplicates when I save entity

Arms answered 28/10, 2015 at 8:16 Comment(4)
do you see the ids in the html of the jsp page? (in the drop down)?Allayne
wich API are you using for persistance ? JPA ?Scruff
@fabien t JPA unrelated with this questionArms
@Si mo No I don't see. I tryes to change but anyway id field reads to another fieldArms
B
1

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);
    }
}
Briolette answered 3/11, 2015 at 11:0 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.