アプリで Spring MVC 3.1 を使用しています。次のようにコントローラーにメソッドがあるとします。
@RequestMapping(value = "/assignUser", method = RequestMethod.GET)
public String assignUserToCompany(ModelMap map){
List<CompanyDetails> companies = //companies list from DAO
List<UserDetails> users = //users list from DAO
map.addAttribute("companiesList",companies);
map.addAttribute("usersList",users);
return "someView";
}
@RequestMapping(value = "/assignUser", method = RequestMethod.POST)
public String assignUserToCompany(@RequestParam("user")UserDetails user,
@RequestParam("company")CompanyDetails company){
if(user!=null && company!=null){
// some operations with entities
}
return "someView";
}
ビュー側にフォームがあります:
<form method="post" action="assignUser.html">
<label for="select-users"><spring:message code="assignUser.label.users"/> </label>
<select id="select-users" name="user">
<c:forEach items="${usersList}" var="user">
<option value="${user}">${user.firstName} ${user.legalName}</option>
</c:forEach>
</select>
<label for="select-companies"><spring:message code="assignUser.label.companies"/> </label>
<select id="select-companies" name="company">
<c:forEach items="${companiesList}" var="company">
<option value="${company}">${company.name}</option>
</c:forEach>
</select>
<input type="submit" value="<spring:message code="assignUser.label.submit"/>"/>
</form>
入力で選択したオブジェクトをリクエストパラメーターとして渡し、それらを使用していくつかの操作を実行したいのですが、標準的な @RequestParam では、プリミティブ型とラッパーしか許可されていません。オブジェクトを渡すためにこれをカスタマイズできますか? ありがとうございました。