Spring MVC形式的两个模型

时间:2018-10-03 19:18:20

标签: java spring spring-mvc

假设我有一个用户模型:

@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;

@Column(name="username")
private String username;

@Column(name="password")
private String password;

@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name="user_profile_id")
private UserProfile profile;

UserProfile模型:

@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;

@Column(name="email")
private String email;

@Column(name="firstname")
private String firstname;

@Column(name="lastname")
private String lastname;

我可以在控制器中添加此模型:

@RequestMapping(value = {"/user/{id}"}, method = RequestMethod.GET)
public String showUser(ModelMap model, @PathVariable int id) {
    User user = userService.findById(id);
    model.addAttribute("user", user);

    return "UserView";
}

然后可以像这样在.jsp页面中访问模型:

<form:form method="POST" modelAttribute="user">
    <form:input type="text" path="username"/>
    <form:input type="password" path="password"/>
</form> 

但是问题是-在编辑从控制器传递到.jsp页面的用户模型时,如何同时编辑位于User模型中的UserProfile模型?< / p>

问题不是重复的,因为我想知道“路径”是否可以处理层次结构属性,而不是如何仅将一个对象传递给视图。

1 个答案:

答案 0 :(得分:2)

像这样使用

<select class="monday">
    <option value="NONE"> --SELECT--<option>
    <c:forEach items="${employees.roster}" var="roster">
    <option value="${roster.shiftValue}">${roster.shiftId} /${roster.shiftValue}</option>
    </c:forEach>
</select>

我不建议您将您的实体传递到前面,而是使用DTO进行去耦