|
||||||||||||
| 前のページ 1 2 3 4 | ||||||||||||
| データソースの定義 | ||||||||||||
|
データソースを定義するには、XMLデータを扱うdocumentDataSourceタグと、Javaのオブジェクトを扱うobjectDataSourceの2種類が用意されていますが、今回はdocumentDataSourceタグを利用します。 documentDataSourceタグは、リスト8の1のようにid、source属性を用いて定義します。id属性はデータソースを一意に特定するIDを指定します。今回はproductsとし、source属性はデータの供給先を指定します。注文画面が配置されるディレクトリ、Web-Contentの下に置いたproducts.xml(リスト7)をデータの供給先として設定しています。 リスト7:product.xml
<?xml version="1.0" encoding="UTF-8"?>
このように定義されたデータソースからデータを取得するには「DataServcie.bind」を利用します(DataService.bindはbindと省略できます)。リスト8の2はテーブル1行の「商品」列と「単価」列に、product.xmlで定義されている「product / name要素」、「product / price」要素をバインドしている箇所です。 bindではバインドするデータを取得するデータソースを「dataSource」で指定し、データソースから取得したデータへのクエリを「select」にXPath形式で指定します。 リスト8:XMLファイルをデータソースとする定義 ここまで説明した方法ではテーブル1行のデータしかバインドしていません。そこで最後に、メニューテーブルのデータをXMLから取得した複数の商品データから取得して表示してみましょう。複数のデータを反復させて、データをバインドするにはiteratorタグを用います。iteratorタグではdataSource属性でデータソースを指定し、selectで反復するデータを選択します。 例としてリスト7のproduct.xmlのproduct要素をコピーし、好きな商品のXMLデータを作成してください。次に、リスト9のようにrowタグを「iteratorタグ」で囲みます。 リスト9:iteratorタグを用いたデータバインド product.xmlからデータを供給するデータソースは「product」なので、iteratorタグのdataSource属性に「product」を指定し、iteratorタグで反復させて扱うデータは商品にはproduct.xmlから商品1つをあらわすproduct要素を取得するため、select属性に「//product」と指定しているのです。 iteratorタグには他にもデータソースが供給するデータが更新されたときにUIにバインドさせたデータも更新させる機能などが備わっているので、ドキュメントを参照しながら試してみてください。 |
||||||||||||
| まとめ | ||||||||||||
|
今回はMCOとデータバインドを説明しました。得てしてクライアント側のモジュールは専用の言語などで定義しなければならない場合が多いのですが、NexawebではMCOというJavaのモジュールとして定義できるのは便利といえるでしょう。データバインドもシンプルな点は良いのですが、タグを間違えた場合に表示されるエラーがややわかりにくいのは気になります。このように現在のNexawebではエラーから原因を特定するのが少々難しいという部分があります。この点については今後改善されていくでしょう。 もしデバッグで困った場合は、Nexaweb Client上で表示されている画面をアクティブにして、F1キーを押します。すると標準出力に現在表示されている画面のNXMLが表示されるので活用してみてください。 次回はデータベースから取得したデータをデータソースとする方法やSpringとの連携、フォーマットなどについて説明する予定です。 |
||||||||||||
|
前のページ 1 2 3 4 |
||||||||||||
|
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||




