前 次 前/次ボタンと目次ボタンとの区切り線

手順 3 : データ グリッドを作成する

この手順では、アプリケーションにデータ グリッドを追加します。データ グリッドは、データを HTML テーブルとして表示するように設計されている一連の JSP タグです。これは、データベース データの表示用に特に有効です。データ グリッドはデータベース フィールドをテーブルのカラムとして表示し、データベース レコードをテーブルの行として表示します。

この手順のタスクは以下のとおりです。

顧客リストを表示する JSP ページを作成する

この手順では、新しい JSP ページを作成し、ページ フローのナビゲーション スキーム内に配置します。getCustomers() アクションが呼び出されると、ユーザはこの JSP ページに転送されます。

  1. [ページ フロー エディタ] タブで、getCustomers アクション アイコンをクリックしてノードを中央に配置します。
  2. [未指定] ノードを右クリックして [新しい JSP] を選択します。

    未指定ノードは、getCustomers アクションが、指定された JSP ページまたは別のアクションに向かわないことを意味します。未指定ノードが含まれる場合でもページ フローはコンパイルされますが、実行時に getCustomers アクションが呼び出されると、例外が送出されます。ソース コードでは、未指定ノードは Forward オブジェクトの path 属性における空の文字列を表します (@Jpf.Forward(name = "success", path = "")。



    注意 : データは、暗黙的オブジェクトpageInput を介してアクションから JSP ページに渡されます。暗黙的オブジェクトは、ページ フロー内でデータを渡す目的でデータを読み書きできる (書き込む場合が多い) ページ フロー内の場所です。

    暗黙的オブジェクト pageInput は、アクションから JSP ページにデータを渡すための標準の場所です。

    アクションは、アクション出力を宣言することによって、データを暗黙的オブジェクト pageInput に書き込みます。次のアクションでは、Customer[] データを暗黙的オブジェクト pageInput.getCustomerResult に書き込むことを宣言しています。
        @Jpf.Action(
                    ...
                    actionOutputs = { @Jpf.ActionOutput(  name="getCustomersResult", type = model.Customer[].class) }
                    ...
                    )
        public Forward getCustomers() {
    ページ入力では、JSP ページで受け取ることを期待しているデータ型を宣言します。次の JSP タグでは、暗黙的オブジェクト pageInput.getCustomerResult の Customer[] データを受け取ることを宣言しています。
        <netui-data:declarePageInput name="getCustomersResult" type="model.Customer[]" required="true" />
    アクションが予想外のデータ型を渡す場合、実行時例外が送出されます。

    アクション出力またはページ入力のプロパティを編集する必要がある場合は、アクションと JSP との間にまたがる矢印を右クリックして、[アクション出力を編集] を選択します。
  3. 新しい JSP を右クリックし、必要に応じて [名前の変更] を選択し、JSP の名前を customers.jsp に変更し、〔Enter〕を押します。

顧客リストを表示するグリッドを作成する

このタスクでは、Java オブジェクトを HTML テーブルとして表示するように特別に設計されている一連の JSP タグ (<netui-data:dataGrid>、<netui-data:rows> など) を追加します。

  1. [ページ フロー エディタ] タブで customers.jsp を右クリックし、[開く] を選択してソース コードを開きます。
  2. [JSP データ パレット] の [ページ入力] セクションで、getCustomersResult アイコンを検索します。
    この getCustomersResult アイコンを customers.jsp のソース コードまでドラッグし、</netui:body> タグの直前にドロップします。

  3. [ウィザードの選択] ダイアログから [データ グリッド] を選択し、[OK] をクリックします。

  4. [データ グリッド] ダイアログで、[カラム] タブをクリックします。

  5. 以下の順序になるようにカラムを再順番付けします。
       
       [Id]
       [First Name]
       [Last Name]
       [Company Name]
       [City]
       [State]
       [Zip]
       [Phone]
       [Email


  6. [新規作成] ボタンをクリックし、新しいカラム (デフォルト名は Newcolumn0) をリストの最上位に配置します。




    これらのリンクによって、編集ページに移動し、特定の行のフィールドを更新できます。
  7. 新しいカラムの [ヘッダ テキスト] を Newcolumn0 から Edit に変更します (編集するセル内をクリックすると、テキストを変更できます)。

  8. [表示方法] カラムを [テキスト アンカー] に設定します (これによって、テキストがプレーン テキストではなくリンク テキストになります)。

  9. [コンテンツ ソース] カラムを [静的] に設定します。

    このドロップダウンを [静的] に設定することによって、各行のカラムに同じコンテンツ (静止画像など) を表示する意図を伝えています。[データ] に設定すると、カラムに動的コンテンツを表示する意図を伝えることになります。通常、行 ID など、その行のデータに基づく表示テキストです。

    ドロップダウンを [データ] に設定すると、ウィザードの下部に動的な表示テキストをフォーマットできるフィールドが表示されます。ドロップダウンを [静的] に設定した場合、これらのフィールドは表示されません。

  10. [表示テキスト] フィールドに Edit と入力します。

  11. [新規] ボタン ([アンカー アクション] フィールドの横) をクリックします。

  12. [新しいアクション] ダイアログの [アクション テンプレート] ドロップダウン リストから [コントロールを使用して編集する項目の取得] を選択します。

    この [新しいアクション] ウィザードでは、一般的なシナリオ用のさまざまなアクションを構築できます。また、新しいアクションを作成するためにさまざまなオプションを利用できます。[単純な宣言アクション] を選択すると、単純なナビゲーション的アクションを設定できます。[コントロール メソッドの呼び出し] を選択すると、コントロール呼び出しアクションを設定できます。

    [コントロール メソッド] ドロップダウン リストで、getCustomerById(Integer) メソッドが選択されていることを確認します。
    [次へ] をクリックします。

  13. [新しいアクション] ダイアログの [入力マッピング] ページで [終了] ボタンをクリックします。



    ページ フロー コントローラ ファイルに getCustomerById という新しいアクションが作成されます。
  14. [データ グリッド] ダイアログで、[パラメータ] タブをクリックします。

  15. [選択] ボタン ([コンテンツ] タブではなく [パラメータ] タブ上) をクリックします。

  16. [id] プロパティを選択し、[OK] をクリックします。

  17. [データ グリッド] ダイアログで [OK] をクリックします。

  18. 〔Ctrl〕+〔Shift〕+〔S〕を押して作業を保存します。

この時点で、以下のデータ グリッドが customers.jsp ページに追加されました。

	<netui-data:dataGrid name="getCustomersResultGrid"
		dataSource="pageInput.getCustomersResult">
		<netui-data:configurePager disableDefaultPager="true" />
		<netui-data:header>
			<netui-data:headerCell headerText="Edit" />
			<netui-data:headerCell headerText="Id" />
			<netui-data:headerCell headerText="First Name" />
			<netui-data:headerCell headerText="Last Name" />
			<netui-data:headerCell headerText="Company Name" />
			<netui-data:headerCell headerText="City" />
			<netui-data:headerCell headerText="State" />
			<netui-data:headerCell headerText="Zip" />
			<netui-data:headerCell headerText="Phone" />
			<netui-data:headerCell headerText="Email" />
		</netui-data:header>
		<netui-data:rows>
			<netui-data:anchorCell value="Edit" action="getCustomerById">
				<netui:parameter name="id" value="${container.item.id}" />
			</netui-data:anchorCell>
			<netui-data:spanCell value="${container.item.id}">
			</netui-data:spanCell>
			<netui-data:spanCell value="${container.item.firstName}">
			</netui-data:spanCell>
			<netui-data:spanCell value="${container.item.lastName}">
			</netui-data:spanCell>
			<netui-data:spanCell value="${container.item.companyName}">
			</netui-data:spanCell>
			<netui-data:spanCell value="${container.item.city}">
			</netui-data:spanCell>
			<netui-data:spanCell value="${container.item.state}">
			</netui-data:spanCell>
			<netui-data:spanCell value="${container.item.zip}">
			</netui-data:spanCell>
			<netui-data:spanCell value="${container.item.phone}">
			</netui-data:spanCell>
			<netui-data:spanCell value="${container.item.email}">
			</netui-data:spanCell>
		</netui-data:rows>
	</netui-data:dataGrid>

ページ フローを実行する

  1. [ページ フロー エクスプローラ] タブで、サーバ アイコンをクリックし、ページ フローをデプロイおよび実行します。

  2. [サーバーで実行] ダイアログで、[BEA WebLogic v10.0 Server] が選択されていることを確認し、[終了] をクリックします。


    ブラウザ タブが表示され、顧客データのグリッドが表示されます。
  3. http://localhost:7001/customerCare/customerManagement/CustomerManagementController.jpf のブラウザ タブを閉じます。

チュートリアルを移動するには、矢印をクリックしてください。

 

ナビゲーションをスキップ バー   ページの先頭