タイトルMSM2001》「初級を脱出!ちょっと進んだWebObjects」カテゴリーWebObjects, イベント
作成日2001/12/10 18:49:21作成者新居雅行
「初級を脱出!ちょっと進んだWebObjects」として、千明社の倉持哲也氏からの講演が行なわれた。この講演は、一定以上のWebObjectsの知識を前提としたものとなっているため、まず最初にどの程度の知識を「初級」とするのかといった説明が行われた。そして、映画のデータベースで、制作スタジオやタレントなどを管理するタイプのアプリケーションを題材に話がすすめられた。実際のアプリケーションの使い方を示し、さらにプロジェクトの内容を説明した。すでにいくつかのページが作られており、カスタムEOFコンポーネントを使っている。
まずは、選択した項目のリレーションシップ先のレコードを表示する方法の説明から開始された。そこでの問題は、選択した結果のデータをどのように受け渡しするかといったことだ。1つの方法は、セッションに必要なデータを設定するという方法である。プログラムの見通しが良くなるが、複雑なアプリケーションの場合はセッションにセットしたデータがnullになることもあり得るので、それを考慮しなければならないこともある。別の方法として、移動先のページで表示用のデータを受け取るメソッドを用意しておくという手段である。シンプルだが、コーディングの量が増えてメンテナンス性が悪くなる可能性がある。今回はセッションを使った受け渡し方法を説明する。
まず、リレーションシップ先の表示するコンポーネントを作成する。そして、Sessionに選択していたデータの受け渡しをし、値をセッションに保持するためのメソッドを追加する。そして、sessionの中で選択しているデータを参照できるようになり、コンポーネントにバインドすることでWebページ内で利用できるようになる。そして、サブミットボタンをクリックしての処理を組み込むのであるが、マルチプルサブミットの設定が忘れがちであることも指摘していた。また、コンポーネントのコンストラクタで、WOContextの引数が必要だが手作業でのタイプが必要になるということも指摘した。コンストラクタでは、1対多のためにNSArrayが戻される。
続いて、WOComponentの再利用についての解説が行われた。レコードの編集画面と追加画面で同じ画面要素を共通に使うという方針を実現する。再利用するコンポーネントでは、ページのインスペクタでPartial documentを選択しておく必要がある。コンポーネントの設計では、ポップアップメニューから特定のテーブルの内容を表示したいが、ポップアップメニューでの一覧表示をすることと、選択された値をセットすることが必要になる。APIエディタを使って外部に公表するキーを指定し、コンポーネントをページに設定する。そして、インスタンス変数を定義してバインドするという手順となる。さらに、同じコンポーネントを使ってレコードを追加するページの作成も説明された。追加では、一覧表示のディスプレイグループに対してレコードを追加する方法をソースを示して解説した。
次に、入力データの検査の方法が説明された。フォーマッタクラスを使う方法、Validationを使う方法、コンポーネントに直接ロジックを実装する3つの方法がある。dataFormatというアトリビュートに設定した情報に応じてデータを検査することができる。ただし、問題もあるので正しくない値であった場合の例外処理メソッドをオーバーライドして処理を組み込む方法が解説された。EOValidationについては、カスタムクラスに指定のメソッドをオーバーライドして記述するが、Ver.4.5からVer.5で変更された部分であり、必要な記述を行う方法の説明も行われた。
なお、時間の関係で説明はできなかったが、セミナー参加者に配付された資料では、画像データを利用する方法も詳細に記載されていた。また、セミナーの参加者限定で、実際に作成されたプロジェクトを提供するということも説明された。
関連リンク