J'utilise un pickList
de PrimeFaces avec un convertisseur personnalisé.Les valeurs converties par le convertisseur personnalisé ne sont pas affichées
JSF:
<p:pickList converter="costsConverter" value="#{offerController.costsAsDualListModel}" var="cost" itemLabel="#{cost}" itemValue="#{cost}" />
offerController.costsAsDualListModel
ressemble à ceci:
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;
}
Et mon convertisseur personnalisé ressemble à ceci:
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()
est appelé et valueOf
est correct, mais dans mon liste de sélection je vois encore les objets et non la valeur de retour fo getAsString()
.
J'ai essayé d'utiliser <f:converter converterId="costsConverter"/>
dans l'élément picklist
. Même problème. Aussi je me suis inscrit le convertisseur faces-config.xml
:
<converter>
<converter-id>costsConverter</converter-id>
<converter-class>com.my.converter.CostsConverter</converter-class>
</converter>
Quel pourrait être le problème?
vous devez utiliser converterID avec l'attribut 'converter'. c'est la valeur de '' dans le fichier de configuration de l'application jsf (faces-config.xml) ou dans l'annotation '@ FacesConverter'. –
Pour l'étiquette, un convertisseur n'est pas nécessaire (même pas utilisé). Utilisez juste '# {cost.no} là ... – Kukeltje