0
我不是新手到java,但今天我吸了一个小时的问题,我不知道为什么。如何通过对象列表
我的代码looksas如下:
我的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是字符串,它对我来说非常适合。
注意,当我执行此代码:
System.out.println(selectedThemes);
它显示列表的对象正常。
编辑
我不知道如果这个代码也可能和我的问题有关:这是一个SelectManyMenu 有关系,与我的ArrayList
<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。 任何帮助,谢谢。
您正在迭代'selectedTheme ** s **',并且'ArrayList'是'selectedTheme'。这是一个错字吗?这听起来像你可能有一个或两个原始类型的地方,因为如果你有正确的通用代码,这样的异常不应该发生,因为代码不会编译...你可以显示更多的代码?我不确定任何人都可以告诉你刚刚提供的内容。 – awksp
看起来像(有这个错误)你有变量的范围问题。提出的异常声称一个字符串是问题,这导致我相信你已经意外地将'selectedThemes'重新定义为一个可以接受的字符串列表。 –
Kodlee Yin maby你是真实的,因为在jsf中,控制器创建一个组件树,也许控制器创建一个字符串列表 – user3521250