7

ビューを返す次のコントローラーがあります。

@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()

次の ID を持つコレクションを返します。

ここに画像の説明を入力

jsp では、次のようにレンダリングします。

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

このオブジェクトを受け入れる次のコントローラーがあります。

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

terminalAdminデバッグでは、ID のない adminRoles が付属していることがわかります。

ここに画像の説明を入力

これを修正する方法は?

PS

エンティティを保存すると、依存コレクションの重複が続きます

4

1 に答える 1

1

私にとってはよりクリーンなので、私はConvertersを使用することを好みます

次のようなものが必要です。

public class StringToAdminRoleConverter implements Converter<String, AdminRole> {

    @Autowired
    TerminalAdminService terminalAdminService;

    @Override
    public AdminRole convert(String role) {
        return terminalAdminService.findRoleByName(role);
    }
}
于 2015-11-03T11:00:34.763 に答える