几个h:selectManyCheckboxs 由这种类型的 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吗?如果是这样,是否已在以后的版本中修复?
- 有解决方法吗?
提前非常感谢。
问候,
丹尼尔