タイトル【倉橋浩一、じつはWebObjectsで飯食ってます】WebObjectsで掲示板を作る(2)空のコンポーネントを用意するカテゴリーWebObjects, 倉橋浩一、じつはWebObjectsで飯食っています
作成日2001/1/9 15:15:9作成者倉橋浩一
WebObjectsで開発する場合、手順はいろいろあるのですが、比較的単純なアプリですので最初に空っぽのコンポーネントだけ作ってしまうことにしましょう。前回のおさらいになりますが、コンポーネントとはhtmlページに相当するしろものです。

ProjectBuilderの一番左のコラムのWeb Componentsグループをクリックし、FileメニューからNew In Projectを選択します。次にコンポーネントの名前を入力してOKをクリックするとWizardが開きますが、今回はすべて「None」「Java」で真っ新なページを作ります。掲示板を選択するためのMainページはすでに用意されていますので、メッセージを書き込むMessagePageと表示のためのMessageListPageを追加します。なお、コンポーネント名とEOModeler上のテーブル(Entity)名とが重ならないように気をつけてください。Entity名はクラス名と同様に扱われますし、コンポーネント名はそのままJavaのクラス名になってしまいますので、WebObjectsは同じクラスが二つあるかのように誤解して、おかしな動作をします。
実は私も時々やっちゃうんですけどね。なので、それを防ぐためにコンポーネント名には必ず末尾にPageを付けるようにしています。
空のページを作ったら、まっさきにタイトルを付けておきましょう。これもよく忘れるんですよね。お客さんのところに製品を納めた後になってから「untitled」のままのページに気付いたり…。ので、最初につけておきます。WOBuilderを起動してInspectorを開いてTitle:のところに文字を入力してください。最初のページMainは"掲示板一覧"、今作ったMessagePageは"メッセージ書き込み"、MessageListPageには"メッセージ一覧"をそれぞれ設定します。ほんとは、Mainで選んだ掲示板タイトルを使いたいところですが、ま、これも後のお楽しみということで....。

◇インスペクタを使い、Main.woにタイトルを付ける
 

■他のページへ飛ぶために
前述の通り、最初のページMainには掲示板の一覧表が表示されます。で、その中の一つをクリックすると次へ飛ぶ、ということをやりたいんですが、一気にあれもこれも欲張るのも消化不良の元なので、今日のところは掲示板を一つに絞ります。ただ、気は心ということで、最初のページには「掲示板へ」というリンクだけを用意し、ここをクリックするとメッセージを表示するページに飛ぶということにします。

この作業は、WebObjects Builderを使います。ProjectBuilderのWeb Componentグループをクリックし、その中のMain.woをダブルクリックします。
ここに前述の通り、頭に何行か隙間を開けてから「掲示板へ」とタイプし、センタリングし、文字サイズを大きくします。そして、「掲示板へ」を選択しておいて、WOHyperLinkのアイコンをクリックします。これで、「掲示板へ」という文字列のハイパーリンクができました。

◇トップページのレイアウト
 

レイアウトは、お好みで行なって下さい。なお、文字列の上の隙間、私は「shift+returnキー」で<BR>を入れましたが、「returnキー」でパラグラフとしてもかまいません。いずれにしても、お好みでどぞ。
WebObjectsのWOHyperLinkは、通常のハイパーリンクと同様に他のページへジャンプする時にも使われますが、WOアプリで生成されたWebページ上のハイパーリンクをクリックすると、

(1)WOHyperLinkのactionアトリビュートにバインドされたアクション関数を呼び出し、
(2)アクション関数の中の処理を実行した後、
(3)自分自身、または他のページを新たに生成する

という動作をします。つまり、リンクを押せば、なにやら必要な処理を実行して、同じページを再表示するか、他のページへジャンプする、ということです。前回のサンプルでは、何かをクリックしても同じページの上に表示されるデータが変化するだけでしたが、これはより正確にいえば「なにやら処理を実行して、同じページを再表示」していたわけです。
今回は他のページにジャンプする必要があります。この場合は、アクション関数の中で次に呼び出すページを呼び出してやり、それを返してやるという処理をします。これはWOBuilderが必要なソースを生成してくれます。WOBuilderのウインドウ左下にあるEdit SourceプルダウンメニューからAdd Action...を選び、関数名と呼び出すコンポーネント名を指定します。
アクション関数名は何にしてもいいですが、わかりやすくするためにactionMessageListにします。コンポーネント名にはMessageListPageを入力します。何にしてもいいですが、アクション関数名は小文字で始まり、コンポーネント名は大文字で始まる名前にしてください。また、命名規則はJavaの文法に従います。

◇アクション関数の名前とそこから返すページ名を指定します
 

WOBuilder上には、actionMessagePageが追加されます。

◇WOBuilderのブラウザ部分
 

actionMessageListが追加されているのが見えます。ちなみに、actionMessageListのすぐ上に線が入っていますが、これより上はオブジェクトや変数、下はアクション関数を意味しています。

では、actionMessageListと「掲示板へ」のWOHyperLinkをバインドします。ブラウザ部分のactionMessagePageをクリックしてそのままドラッグし、「掲示板へ」のところでリリースし、ポップアップメニューでactionを選びます。なお、これはWO 4.5での挙動で、4.0ではちょっと異なりますのでご注意ください。

◇マウスボタンをリリースした直後
 

ちなみに、この時点でMain.woをセーブし、ProjectBuilderからbuild & launchすると、コンパイル終了後「掲示板へ」という文字だけのページが表示され、それをクリックすると何もない空白のページへジャンプする、という動作をします。

(「WebObjectsで掲示板を作る」は続きがあります。この項目の1回目の原稿にある「■サポートについて」についても御参照ください。)
[倉橋浩一/テクニカル・ピット]
関連リンクWebObjectsのページ