3

チェックボックスを作成しました。複数のチェックボックスを選択した場合、それらの複数の選択されたチェックボックスの値を取得するにはどうすればよいですか?私のコードは:

<h:selectManyCheckbox id="chkedition" value="#{adcreateBean.editionID}" layout="lineDirection" styleClass="nostyle">
<f:selectItems value="#{adcreateBean.editions}" var="item" itemLabel="#{item.editionName}" itemValue="#{item.editionID}"/>
</h:selectManyCheckbox>

value = "#{adcreateBean.editionID}"を取得したので、単一の値を返します。

4

1 に答える 1

3

コンポーネントのvalueは、配列またはとまったく同じタイプ<h:selectManyXxx>を指す必要があります。であると仮定すると、またはにバインドする必要があります。ListitemValueLongLong[]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最終的にはClassCaseExceptionsになります。したがって、そうです:

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>
于 2012-06-16T18:43:12.800 に答える