我正在使用自定義轉換器的PrimeFaces'pickList
。由自定義轉換器轉換的值不顯示
JSF:
<p:pickList converter="costsConverter" value="#{offerController.costsAsDualListModel}" var="cost" itemLabel="#{cost}" itemValue="#{cost}" />
offerController.costsAsDualListModel
看起來是這樣的:
public DualListModel<Cost> getCostsAsDualListModel() {
DualListModel<Cost> costsDualList;
List<Cost> costsSource = new ArrayList<Cost>();
List<Cost> costsTarget = new ArrayList<Cost>();
for (Cost c : costs) {
costsSource.add(c);
}
costsDualList = new DualListModel<Cost>(costsSource, costsTarget);
return costsDualList;
}
我的自定義轉換器看起來像這樣:
public String getAsString(FacesContext context, UIComponent component, Object object) {
if (object == null) {
return "";
}
Integer no = ((Cost) object).getNo();
String valueOf = String.valueOf(no);
return valueOf;
}
getAsString()
被調用,valueOf
是正確的,但在我的選項列表我仍然看到對象而不是返回值fo getAsString()
。
我試圖在picklist
元素內使用<f:converter converterId="costsConverter"/>
。同樣的問題。我還註冊了轉換器faces-config.xml
:
<converter>
<converter-id>costsConverter</converter-id>
<converter-class>com.my.converter.CostsConverter</converter-class>
</converter>
有什麼問題?
你必須使用converterID用'converter'屬性。這是jsf應用程序配置文件(faces-config.xml)或「@ FacesConverter」註釋中'<轉換器id>的值。 –
對於標籤不需要轉換器(甚至沒有使用)。只需在那裏使用'#{cost.no} ... – Kukeltje