2
我有一個結合用戶對象使用表單的jsp頁面。在最後一張表格中,我試圖獲得Collection<Permission>
。但是,當我試圖將數據傳遞給控制器我越來越因爲400錯誤:如何在控制器中實現正確的數據綁定?
Field error in object 'user' on field 'permissions':
rejected value [add,view];
codes [typeMismatch.user.permissions,typeMismatch.permissions,typeMismatch.java.util.Collection,typeMismatch];
arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.permissions,permissions];
arguments [];
default message [permissions]];
default message [Failed to convert property value of type 'java.lang.String[]' to required type 'java.util.Collection' for property 'permissions'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [it.marco.javaproject.domain.Permission] for property 'permissions[0]': no matching editors or conversion strategy found]
這裏是我的JSP形式:
<form:form action="/user/permission" method="POST" modelAttribute="user">
<form:checkboxes path="permissions" items="${permissions}" delimiter=<br>"/>
<form:hidden path="email"/>
<form:hidden path="password"/>
<form:hidden path="name"/>
<input type="submit" value="Next" name="next"/>
</form:form>
控制器的部分:
public String processRoleForm(@ModelAttribute("user") User user, ModelMap model) {
model.addAttribute("permissions", userService.getPermissions());
return "user/form/permissionForm";
}
權限類別:
@Entity
@Table(name = "permission")
public class Permission implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "name")
private String name;
如果我沒有弄錯,我需要在控制器中使用某種數據綁定器。如何實現它?如何正確地將String []轉換爲權限的集合?
這將是我的首選方式,但你可以通過索引他們像'PATH =「權限[0] .value的」'還引用的每個'permission'獨立。但是,這樣做意味着您需要在後端執行大量清理以「清理」未檢查的項目。我會說你最好是寫一個適當的綁定,讓它以這種方式處理,所以你可以得到一個完整的列表,而不必做清理。 – CodeChimp