如何遍历对象列表



我不是java新手,但是今天我被一个问题困了1个小时,我不知道为什么。

我的代码看起来像这样:

我的ArrayList

:

    private ArrayList<Theme> selectedThemes;

我的循环:

for (Theme selectedTheme : selectedThemes) {
        System.out.println(selectedTheme.getNom());
    }

当我尝试执行下面的代码时,我收到这个异常:

java.lang.ClassCastException: java.lang.String cannot be cast to com.mycompany.ecommerce.Modele.Catalogue.Theme

我从例外中理解的是,selectedTheme是String,这对我来说很重要。

注意当我执行这段代码时:

System.out.println(selectedThemes);

它通常显示列表的对象。

编辑

我不确定这段代码是否与我的问题有关:它是一个SelectManyMenu与数组列表

有关系的
<p:selectManyMenu id="advanced" value="#{jsfClient.selectedThemes}" 
                                      var="t"  showCheckbox="true">
                        <f:selectItems value="#{jsfClient.themes}" var="theme" itemLabel="#{theme.nom}" itemValue="#{theme}" />
                        <p:column>
                            <h:outputText styleClass="ui-theme ui-theme-#{t.nom}" />
                        </p:column>
                        <p:column>
                            <h:outputText value="#{t.nom}" />
                        </p:column>
                    </p:selectManyMenu>

jsfClient是ManagedBean。如有任何帮助,谢谢。

问题出在JSF中,更具体地说是itemValue="#{theme}"部分。JSF不能将主题的字符串表示形式转换回Theme对象。

你要么必须实现一个自定义转换器,如这里所描述的例子,或者,如果你不介意混合在另一个库中,你可以使用OmniFaces的SelectItemsConverter

BalusC在这篇博文中还讨论了一些其他可能的策略

相关内容

  • 没有找到相关文章

最新更新