当合并来自JSP的表单对象时,Spring MVC缺少依赖集合的ID [英] Spring mvc miss id of dependent collection when combine form object from jsp

查看:123
本文介绍了当合并来自JSP的表单对象时,Spring MVC缺少依赖集合的ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下控制器可以返回视图:

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

返回具有ID的集合:

在jsp上,我这样渲染它:

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...){
      ....
}

在调试中,我看到terminalAdmin带有不带ID的adminRoles.

In debug I see that terminalAdmin comes with adminRoles without ids.

该如何解决?

P.S.

我保存实体时从属集合重复了

推荐答案

我更喜欢使用

i prefer to use Converters, because for me it's cleaner

您应该具有以下内容:

public class StringToAdminRoleConverter implements Converter<String, AdminRole> {

    @Autowired
    TerminalAdminService terminalAdminService;

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

这篇关于当合并来自JSP的表单对象时,Spring MVC缺少依赖集合的ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆