ここでは、1 つの JSP ページに 2 つの ItemsGrid
コンポーネントと、1 つの Path
コンポーネントがある場合のシナリオを例にとって説明します。Path
コンポーネント(名前 path
)と、2 つの ItemsGrid
コンポーネントの 1 つ(名前 foldersGrid
)が同じ EnterpriseItems
Bean(名前 folders
)にバインドされているとします。この EnterpriseItems
Bean が Crystal Enterprise システム内のフォルダ階層を表示し、ユーザーは path
と foldersGrid
を使用してこの階層をナビゲートできます。この 2 つのコンポーネントは 1 つの EnterpriseItems
Bean にバインドされているため、自動的に同期化します。したがって、ユーザーが片方のコンポーネントを使用して階層をナビゲートすると、その変化はもう一方のコンポーネントに反映されます。
ただし、もう 1 つの ItemsGrid
コンポーネント(名前 reportsList
)は、別の EnterpriseItems
Bean(名前 reports
)にバインドされ、指定した任意のフォルダの Crystal レポートを表示します。ここで、reportsList
をこのページの他のコンポーネントと連係させる方法が問題になります。この問題は、これらのコンポーネントを正しい順序で同期化することによって解決できます。
2 つめの ItemsGrid
コンポーネント(reportsList
)をページ内で有効に他のコンポーネントと連係させるには、ユーザーが foldersList
または path
の特定のフォルダ レベルをナビゲートした場合に、reportsList
が同じフォルダ レベルのレポートを表示するように、これらのコンポーネントを同期化する必要があります。すなわち、reports
EnterpriseItems
Bean の parentItemID
プロパティを、folders
Bean の parentItemID
プロパティの現在の値に設定します。この現在の値とは、ユーザーがフォルダのグリッドまたは Path
コンポーネントにあるフォルダをクリックするたびに取得される値です。これにより、レポートのグリッドは常に同レベルの情報を表示します。コンポーネント間の連係を有効にするには、foldersList
コンポーネントと path
コンポーネントの同期化を設定します。
path
コンポーネントを選択します。reportsList
コンポーネントを選択して、現在のコンポーネントと同期化します。注 複数のコンポーネントが同じ EnterpriseItems
Bean にバインドしている場合に そのうちの 1 つのコンポーネントを同期化しようとすると、複数のコンポーネントが同一の itemSource
プロパティ値(EnterpriseItems
Bean)を共有しており、選択したコンポーネントに同期を追加すると、この Bean にバインドされているすべてのコンポーネントに同期が追加されることを確認するメッセージが表示されます。[OK]をクリックして同期を確認します。
foldersList
コンポーネントを選択して、2 から 5 のステップを繰返し、reportsList
コンポーネントと同期化します。同期化の操作では、アプリケーションに 2 つの重要なコードを追加します。まず、action listener を foldersList
と path
コンポーネントに追加します。
actionListener="#{pc_<nameofpage>.doAction}"
次に、このページの分離コード java クラス(RAD によって作成され、通常は <nameofpage>.java と命名される)にアクション イベント ハンドラ メソッドを追加して同期化を実行します。
public void doAction() {
reports.setParentItemID(folders.getParentItemID());
}
同期化の順序は、重要です。この例では、foldersList
を reportsList
に、そして path
を reportsList
に同期化しています。したがって、foldersList
または path
がクリックされると、reportsList
が同期化されます。しかし、この逆の場合は同期化されません。reportsList
を foldersList
に対して同期化していないため、reportsList
でのアクションで foldersList
が変化することはありません。コンポーネントの選択と同期化の設定にあたっては、最終的に目標とするアプリケーションでの動作を念頭に置いて作業を進めてください。
Business Objects http://japan.businessobjects.com/ サポート サービス http://japan.businessobjects.com/services/ |