我正在使用Spring MVC和JSP。Spring MVC/JSP - 如何從選擇表單傳遞對象的嵌套列表到控制器
我有一個包含組實體列表的用戶實體。關係是多對多(一個組實體包含一個用戶實體列表)。
在我的用戶控制器中,我有一個返回添加用戶頁面的方法,其中包含一個空的User實體和一個可用的Group實體列表。
@RequestMapping(value = "/add", method = RequestMethod.GET)
public ModelAndView loadUserAdd() {
ModelAndView mv = new ModelAndView("user/userAdd");
mv.addObject("user", new User());
try {
mv.addObject("groups", gr.listGroups());
} catch (TestException e) {
mv.addObject("error", e.getMessage());
e.printStackTrace();
}
return mv;
}
在userAdd頁面上,我想從可用組列表中選擇用戶將擁有的組。
<div class="row">
<div class="col-xs-6 col-sm-6 col-md-6 col-lg-6">
<select id="availableGroups" class="form-control" multiple onclick="shuttle('availableGroups', 'selectedGroups')">
<c:forEach items="${groups}" var="group">
<option value="${group.id}">${group.id}: ${group.name}</option>
</c:forEach>
</select>
</div>
<div class="col-xs-6 col-sm-6 col-md-6 col-lg-6">
<select id="selectedGroups" class="form-control" multiple onclick="shuttle('selectedGroups', 'availableGroups')">
<c:forEach var="group" items="${user.groups}" varStatus="status">
<option value="${group.id}">${group.id}: ${group.name}</option>
</c:forEach>
</select>
</div>
</div>
請注意,「穿梭」功能會將一個組從一個選擇元素移到另一個選擇元素。例如。從可用組到所選組,反之亦然。這工作。
提交時,我希望在用戶實體中設置選定的組,以便它將到達addUser方法。
@RequestMapping(value = "/add", method = RequestMethod.POST)
public ModelAndView addUser(@ModelAttribute("user") User user) {
取而代之的是,用戶實體包含一個空的組列表。我相信我的JSP是錯誤的,所以如果有人能指出我的方向是正確的,那將是非常好的。任何關於改進的建議都會很好,因爲我正在做這個學習練習。謝謝。
嗯,對我的問題沒有反饋,但 - 這是一種通常的做法?有人想提供替代品嗎? – MooMoo