タイトル倉橋浩一、じつはWebObjectsで飯食ってます》WebObjectsで作る掲示板〜続編(2)/「書き込みをやめる」ボタンカテゴリーWebObjects, 倉橋浩一、じつはWebObjectsで飯食っています
作成日2001/8/11 20:11:1作成者新居雅行
ボタンとは言っていますが、実際にはHyperLinkにします。ボタンにしないのは、その必要がないからです。ボタン、つまりWOSubmitButtonを使うのは、WOFormの中で入力したテキストやチェックボックスの状態をサーバに送るのが目的です。ところが、「書き込みをやめる」機能の場合には、サーバにテキストなどを送信する必要がありません。単に、Actionメソッドを呼び出せれば、機能を実装することができます。それに、Formの内容をsubmitするのは、それなりにオーバーヘッドがかかりますし。また、ユーザ教育という点からも、ボタンとリンクはきっちり使い分けしておくことが必要だと思います。

さて、作業の手順は、以下の通りです。

(1).ProjectBuilderからMessagePage.woを開く:WebComponentsグループをクリックしてから、MessagePage.woをダブルクリックします。
 

(2).WOBuilderでActionメソッドを追加する(actionAbort):WOBuilderウインドウ左下の「Edit Source▼」から「Add Action...」を選び、Name:actionAbort、Pagereturned:MessageListPageを入力し、Addボタンをクリックします。
 

これでactionAbortが追加されました。
 

(3).WOHyperLinkを貼り付ける:WOBuilderの上で、送信、リセットボタンのカーソルを置き、一つスペースを空けてからWOHyperLinkを配置します。
 

"Hyperlink"の文字を、"書き込みをやめる"に変更します。そのままタイプすればOKです。
 

(4).WOHyperLinkのactionと追加したactionAbortをバインド:バインドしたら、一度Saveしておきましょう。
 

(5).ProjectBuilderに戻って、actionAbortをインプリメント:WOBuilderからProjectBuilderに手っ取り早く戻るには、「Edit Source▼」から「View Source File」を選びます。

MessagePage.javaの末尾付近に、先ほど追加した「actionAbort」がありますので、以下のコードを書きます。MessagePageは、MessageListPageで「書き込み」をクリックした時に呼び出されるactionNewMessage()で生成されます。actionNewMessage()では、新しいレコードを一件追加しています。この時、追加されたレコードは、まだディスクには書き込まれていません。actionAbortに追加したコードは、これを書き込むことなく破棄するものです。

//MessagePage.javaファイルのactionAbortメソッド
public MessageListPage actionAbort() {
session().defaultEditingContext().revert(); // 未保存の変更を破棄する

MessageListPage nextPage = (MessageListPage)pageWithName("MessageListPage");
return nextPage;
}


(6).テスト:では、さっそく試してみましょう。ProjectBuilderのToolsメニューからProject Build→Build & Runを選びます。1〜5までの手順に間違いがなければ、build完了後、ブラウザに「掲示板へ」のメッセージが表示されるはずです。
 

「掲示板へ」をクリックし、さらに「書き込み」をクリックすると、メッセージ書き込み画面にたどり着きます。うーん、久しぶりに見ても、やっぱりひどいデザインですね(笑)。
 

....気を取り直して、「書き込みをやめる」をクリックします。再びメッセージ一覧画面に戻りますが、書き込みをやめたので、何の変化もありません。当たり前ですが。

さて、これで一つ片づきました。どんどん行きましょう。
(続く)
[倉橋浩一/テクニカル・ピット]
関連リンクWebObjectsのページ