4

几个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应该仍然是 a List
  • 我这真的是一个bug吗?如果是这样,是否已在以后的版本中修复?
  • 有解决方法吗?

提前非常感谢。

问候,

丹尼尔

4

0 回答 0