コンポーネントのvalue
は、配列またはとまったく同じタイプ<h:selectManyXxx>
を指す必要があります。であると仮定すると、またはにバインドする必要があります。List
itemValue
Long
Long[]
List<Long>
例えば
private Long[] selectedEditionIds; // +getter +setter
private List<Edition> availableEditions; // +getter
と
<h:selectManyCheckbox value="#{bean.selectedEditionIds}">
<f:selectItems value="#{bean.availableEditions}" var="edition" itemLabel="#{edition.name}" itemValue="#{edition.id}" />
</h:selectManyCheckbox>
を希望する場合List<Long>
は、型のコンバーターを明示的に指定する必要がありますLong
。ジェネリック型は実行時に消去され、コンバーターがないとELはString
値を設定し、List
最終的にはClassCaseException
sになります。したがって、そうです:
private List<Long> selectedEditionIds; // +getter +setter
private List<Edition> availableEditions; // +getter
と
<h:selectManyCheckbox value="#{bean.selectedEditionIds}" converter="javax.faces.Long">
<f:selectItems value="#{bean.availableEditions}" var="edition" itemLabel="#{edition.name}" itemValue="#{edition.id}" />
</h:selectManyCheckbox>