Primefaces を使用して Web アプリを開発していますが、データベースから取得するデータを表すネストされたオブジェクトがあります。
具体的には、多くの列でリクエストを実行し、多くの行を返すため、この結果をList<HashMap<String, Object>>
(各「文字列キー」は、関連付けられた「オブジェクト値」を持つ列の名前です) に格納しています。通常の方法ではList<MyObject>
、データを保存する必要があります。MyObjectには、リクエストが持つ列と同じ数の属性があります。しかし、リクエストの結果をレンダリングするページを作成していて、管理スペースで列を動的に管理できるため、それはできません (ボックスをオン/オフするだけで、管理スペースで列を追加または削除できます)。そしてあなたの変更を検証します。私はそうせざるを得ませんList<HashMap<String, Object>>
。)
p: dataTableのPrimefaces p:columnには「sortBy 」属性がありますが、Primefaces はObject属性での並べ替えのみをサポートしているようです (そのため、「通常の方法では、データを保存するために が必要です」と言っていました)。 .List<MyObject>
#{myBean.list.attribute}
実は、 「sortBy 」の を置き換えてくれるものを探しています。(EL のような#{myBean.list[?]['key']}
ものか、このようなもの) 言い換えれば、Primeface にリスト内の各マップの各値、渡したキーによってリンクされた値を強制的に並べ替える方法を見つけようとしています。
たとえば、私の要求は曲のリストを返します。すべての曲は、歌手、タイプ、日付、国によって特徴付けられます。
たとえば、次の List があります。
Map1(<Singer, SamTsui>
<Type, Pop>
<Date, 2010>
<Country, US>)
Map2(<Singer, Jo>
<Type, Blues>
<Date, 1988>
<Country, US>)
Map3(<Singer, DaftPunk>
<Type, Electro>
<Date, 2013>
<Country, FR>)
Map4(<Singer, Shinee>
<Type, Kpop>
<Date, 2009>
<Country, JP>)
各曲の歌手を並べ替えるにはどうすればよいですか? それとも日付?これを行う方法はありますか、またはp:columnで「 sortBy」機能List<MyObject>
を使用する必要がありますか?
どうもありがとう、
PS : 「filterBy」について同じ質問がありますが、解決策が見つかれば、この問題を解決する方法も同様になると思います。
PS2 :コードは必要ないと思います。これは単なる一般的な質問ですList<HashMap<?, ?>>
。Primefaces を使用してオブジェクトまたはネストされたオブジェクトを表示しようとしていて、このリストにフィルター/並べ替えを追加したいすべての人に質問をすることができるからです。