几个h:selectManyCheckbox
s 由这种类型的 map 支持:Map<Type, ArrayList<MyItem>>
.
xhtml 片段如下所示:
<h:selectManyCheckbox
value="#{backingBean.values['type']}"
collectionType="java.util.ArrayList"
converter="#{myCustomConverter}>
<f:selectItems .../>
</h:selectManyCheckbox>
复选框显示正确,转换器在两种方式中都正确使用。
不幸的是,当我在提交页面后尝试访问地图的值时,地图不再包含列表。相反,我得到一个 ClassCastException,因为这些值已被替换为Object[]
.
搜索互联网,我似乎遇到了与MyFaces完全相同的问题。
我想,我已经将问题追踪到MenuRenderer
. EL 表达式的类型是确定的,在我的例子中这导致了 Object。但只有当类型首先相关时,才会尊重Collection
该属性。collectionType
我使用的是Mojarra 2.1.0,但是即使是更高版本也没有改变相关的源代码。
加起来:
- 我是否有正确的期望
List
应该仍然是 aList
? - 我这真的是一个bug吗?如果是这样,是否已在以后的版本中修复?
- 有解决方法吗?
提前非常感谢。
问候,
丹尼尔