x個のアイテムを含むリストと、x個のポートレットを含むページがあります。ページ上の各ポートレットには、同じバッキングクラスとマイリストへのアクセス権があり、表示される内容は、選択されているリストアイテムによって異なります。編集モードでは、ユーザーが表示するアイテムを選択できます。選択したアイテムは、ポートレットの背後にある設定オブジェクトに保存されます。
現状では、ユーザーがポートレットを編集して別の項目を選択するまで、各ポートレットは最初にリストの最初の項目を表示します。ただし、最初は各ポートレットに異なるアイテムを表示したいと思います。
位置に基づいて表示するアイテムを計算する必要があるようです。2列6行の場合、列2の行4のアイテムにはアイテム8が表示されます((行-1)* #columns +列)。これは、ユーザーがポートレットの移動を開始すると、ポートレットの値が位置によって変化することを除いて、うまく機能します。
最初に選択したアイテムを「ロックイン」したいので、移動しても変化しません。残念ながら、選択した初期アイテム(または初期位置)を設定オブジェクトに格納する必要がありますが、doView関数では格納できず、ポートレットが状態を切り替えるまでprocessActionは呼び出されません。
最初の選択肢をセッションに保存し、processAction関数が呼び出されたときにそれを読み取ることを考えました(実際に送信された選択肢よりも優先度を低くします)。これに伴う問題は、ユーザーがポートレットモードを切り替える前にセッションが無効になると、選択したアイテムが保存されないことです。
私の他の考えは、portlet.xmlファイルのportlet-preferences要素に変数としてポートレットの位置を含めることでしたが、これが可能かどうかさえわかりません。
別のオプションは、自分の設定の実装を使用することだと思いますが、それは最後の手段だと思います。
私が必要なことをどのように達成できるかについて誰かが何か考えを持っていますか?
どんな助け/提案も大歓迎です。
ありがとう、
BJ
PS私はPortlet2.0仕様(イベントは使用していませんが)とJetspeed2.1をポートレットコンテナとして使用しています。