【发布时间】:2013-11-21 06:20:36
【问题描述】:
我在List<Long> 上使用<p:selectCheckboxMenu>:
<p:selectCheckboxMenu value="#{bean.selectedItems}">
<f:selectItems value="#{bean.availableItems}" />
</p:selectCheckboxMenu>
private List<Long> selectedItems;
private Map<String, Long> availableItems;
当提交表单并循环选择以下项目时,
for (int i = 0; i < selectedItems.size(); i++) {
Long id = selectedItems.get(i);
// ...
}
然后我得到一个类转换异常:
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long
at com.example.Bean.submit(Bean.java:42)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
... 27 more
<p:selectManyCheckbox>、<p:selectManyMenu>、<h:selectManyMenu>等也会出现同样的问题,基本上都是多选组件。它在 <p:selectOneMenu> 和单个值 Long 属性上的所有其他单选组件中运行良好。
这是怎么引起的,我该如何解决?
【问题讨论】:
-
你能分享一下你的列表内容吗,因为这段代码似乎不太容易出现这个异常
-
@ankit 看到我的帖子。我编辑并添加图片
标签: jsf jsf-2 primefaces classcastexception selectmanycheckbox