Ich habe ein Problem mit "h:selectManyCheckbox". Wenn ich ein Submit mache, tritt folgende Exception auf:
Ich verwende einen Converter, der mir Objekte vom Typ "Language" zurückgibt (für getAsObject(...)). Demzufolge bin ich der Meinung, dass der darunter liegende Value eine Liste vom Typ List<Language> sein sollte.
Hier zur Veranschaulichung der Web-Code:
<h:selectManyCheckbox value="#{processor.languages.languages1}">
<f:converter converterId="languageConverter" />
<f:selectItems value="#{categoryController.allLanguagesAsSelectIt ems}" />
</h:selectManyCheckbox>
Meine Backing Bean sieht als Ausschnitt folgendermaßen aus:
Ich versuche also per Map den Value zu lesen und zu schreiben (ohne setLanguages()-Methode). Die EL-Anweisung im Web-Code ist dafür zuständig: #{processor.languages.languages1}. "languages1" wäre in diesem Fall also mein Schlüssel in der Map.
Warum wird die obige Exception geworfen? Beim Auslesen der values scheint es ja keine Probleme zu geben.
Code:
java.lang.IllegalArgumentException: ValueBinding for UISelectMany must be of type List or Array org.apache.myfaces.shared_impl.renderkit._SharedRendererUtils.getConvertedUISelectManyValue(_SharedRendererUtils.java:191) org.apache.myfaces.shared_impl.renderkit.RendererUtils.getConvertedUISelectManyValue(RendererUtils.java:630) org.apache.myfaces.shared_impl.renderkit.html.HtmlCheckboxRendererBase.getConvertedValue(HtmlCheckboxRendererBase.java:308) javax.faces.component.UISelectMany.getConvertedValue(UISelectMany.java:308) javax.faces.component.UIInput.validate(UIInput.java:350)
Hier zur Veranschaulichung der Web-Code:
<h:selectManyCheckbox value="#{processor.languages.languages1}">
<f:converter converterId="languageConverter" />
<f:selectItems value="#{categoryController.allLanguagesAsSelectIt ems}" />
</h:selectManyCheckbox>
Meine Backing Bean sieht als Ausschnitt folgendermaßen aus:
Code:
public Map<String, List<Language>> getLanguages() { return languagesMap; }
Warum wird die obige Exception geworfen? Beim Auslesen der values scheint es ja keine Probleme zu geben.