いくつか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
ますか?- これは本当にバグですか?もしそうなら、それはそれ以降のバージョンで修正されていますか?
- 回避策はありますか?
よろしくお願いします。
よろしく、
ダニエル