![](/img/trans.png)
[英]Why can I not register a PropertyEditor for String in Spring MVC?
[英]Spring mvc register custom PropertyEditor
假設我們有:
車類:
public class Car{
private String model;
private String brand;
private Collection<People> owners;
//constructor,getters and setters
}
班級人員:
public class People{
private Car car;
private String name;
private Gender gender;
//constructor,getters and setters
}
班級性別:
public class Gender{
private Char gender;
//constructor,getters and setters
}
然后,如果我想將集合所有者傳遞給我的視圖:
<body>
<h1>Car detail: </h1>
<h2>Owners: </h2>
<table>
<form:form modelAttribute="owners" method="post" action="processOwnersSelection.htm">
<tr>
<td>
<ul>
<form:checkboxes element="li" path="owners" items="${owners}"></form:checkboxes>
</ul>
</td>
</tr>
<tr>
<td>
<button type="submit">Next</button>
</td>
</tr>
</form:form>
</table>
</body>
通過我的控制器:
@RequestMapping(value = "/selectOwners")
protected ModelAndView showOwnersSelection() throws ServiceException{
return new ModelAndView("car/ownerSelection", "owners", super.getService().getAllOwners());
}
注意。 這將用於將多個所有者(存在於out DB中)連接到汽車。
我會得到一個錯誤:
org.springframework.beans.NotReadablePropertyException:Bean類[java.util.HashMap $ Values]的無效屬性“ owners”:Bean屬性“ owners”不可讀或具有無效的getter方法:getter的返回類型是否與設置器的參數類型?
據我了解,Spring通過使用PropertyEditor或Converter的實現來轉換這些?
所以我應該手動編寫一個,但是Spring怎么知道我讓他(或她)必須使用一個? 以及一個什么樣子呢?
總是看到
<form:form modelAttribute="owners" method="post"
action="processOwnersSelection.htm">
modelAttribute應該是對象的引用名稱,該對象包含其形式下的所有屬性。
我們可以使用spring標簽的path屬性(例如復選框或whaever)來訪問它們。
我正在請您將owners
用作modelAttribute,並且它可能不是控制程序中的People
類的模型。
我不知道您如何在控制器中定義它。
我認為您必須在以下代碼中使用People
參考模型屬性而不是owners
<form:form modelAttribute="owners" method="post"
action="processOwnersSelection.htm">
因為path="owners"
會嘗試在您為控制器內的modelAttribute="owners"
定義的類內查找owners
屬性。
請正確檢查。
Spring 3 Type Converter SPI取代了JavaBean PropertyEditor。
配置文件中的<mvc:annotation-driven />
將自動安裝默認類型轉換器。 我們可以使用諸如@DateTimeFormat或@NumberFormat的注釋覆蓋默認值。
對於自定義字段類型,我們可以在配置上遵循以下約定:
定義一個靜態valueOf(String)方法或Constructor(String)以從其String表示形式解析您的值
實現toString()以打印您的值以供顯示
有關更多詳細信息,請參見此鏈接 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.