SelectManyCheckBox java.lang.Boolean无法强制转换为javax.faces.model.SelectItem

时间:2011-03-22 20:33:22

标签: jsf jsf-2 icefaces

使用selectManyCheckBox时出现以下问题:

campaignInformationForm.campaignInformation.googleAnalytics(这是布尔对象)

  

java.lang.Boolean无法强制转换为   javax.faces.model.SelectItem

我的代码是:

<ice:selectManyCheckbox id="options" layout="pageDirection" >
        <f:selectItem itemValue="#{campaignInformationForm.campaignInformation.googleMerchantAccount}" itemLabel="#{msgs['page.information.GoogleAccount']}" />
        <f:selectItem itemValue="#{campaignInformationForm.campaignInformation.googleMap}" itemLabel="#{msgs['page.information.GoogleMap']}" />
        <f:selectItem itemValue="#{campaignInformationForm.campaignInformation.googleAnalytics}" itemLabel="#{msgs['page.information.GoogleAnalytics']}" />
    </ice:selectManyCheckbox>

有什么想法吗?

修改

这是我的DTO

public class CampaignInformation implements Serializable{
.....BOILERPLAIT CODE    ...
        private boolean googleMerchantAccount;
    private boolean googleMap;
    private boolean googleAnalytics;
.....GETTER/SETTER   ...

我想要一个可以根据它们的值使用那些布尔选择/取消选择的复选框,可以这样做吗?

1 个答案:

答案 0 :(得分:3)

此处示例中的f:selectItem标记是正确的。我几乎可以肯定你在一个selectItem中使用了“value”而不是“itemValue”(也许你删除了一个干净的例子?)。

此外,选择存储在哪里?我想你应该在冰中有一个“值”属性(实际上,这次):selectManyCheckbox,就像这样:

<ice:selectManyCheckbox id="options" layout="pageDirection" value="#{campaignInformationForm.selectedItems}">
    <f:selectItem itemValue="#{campaignInformationForm.campaignInformation.googleMerchantAccount}" itemLabel="#{msgs['page.information.GoogleAccount']}" />
    <f:selectItem itemValue="#{campaignInformationForm.campaignInformation.googleMap}" itemLabel="#{msgs['page.information.GoogleMap']}" />
    <f:selectItem itemValue="#{campaignInformationForm.campaignInformation.googleAnalytics}" itemLabel="#{msgs['page.information.GoogleAnalytics']}" />
</ice:selectManyCheckbox>

(selectedItems是所选项目的列表或数组)