4

いくつかh:selectManyCheckboxの は、次のタイプのマップによってサポートされています: 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。私の場合は Object につながる EL 式の型が決定されます。ただしCollection、最初にタイプが関連している場合にのみ、属性collectionTypeが尊重されます。

私は Mojarra 2.1.0 を使用していますが、それ以降のバージョンでも関連するソース コードは変更されていません。

要約:

  • Listが のままである という正しい期待はありListますか?
  • これは本当にバグですか?もしそうなら、それはそれ以降のバージョンで修正されていますか?
  • 回避策はありますか?

よろしくお願いします。

よろしく、

ダニエル

4

0 に答える 0