■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 2008年06月01日 楽しいJava講座 - 初心者から達人へのパスポート vol.106 セルゲイ・ランダウ バックナンバー: http://www.flsi.co.jp/Java_text/ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [このメールマガジンは、画面を最大化して見てください。] ======================================================== ◆ 01.Strutsのアプリケーション開発 ======================================================== では、続いてSimpleActionFormクラスのソース・コードを見てみましょう。 まず、このクラスは、 -------------------------------------------------------- public class SimpleActionForm extends ActionForm { -------------------------------------------------------- と書いてある通り、ActionFormのサブクラスとして作成されていることを 頭に入れておいてください。 そして、このクラスの上のほうには、 -------------------------------------------------------- /** Name */ private String name = null; /** Secret */ private String secret = null; /** Color */ private String color = null; /** Confirm */ private boolean confirm = false; /** Rating */ private String rating = null; /** Message */ private String message = null; /** Hidden */ private String hidden = null; -------------------------------------------------------- というようにフィールド定義が並んでいますが、これらのフィールドに対する setter、getterの定義が下のほうにあります。以前JavaBeansの説明をしたとき に習った通り、これらはBeanのプロパティーを定義するものですね。 これらのプロパティーは、Simple.jsp(/jsp/simple/Simple.jsp)の中のいくつ かのタグにあったproperty属性に対応しています。 たとえば、Simple.jspの中には <html:text property="name" size="40" maxlength="50"/> というのがありましたが、このpropertyの値"name"がSimpleActionFormのname プロパティーに対応しています。 ActionServletは、requestオブジェクトから取り出したFORMのデータを、それぞれ これらのpropertyの値と一致するプロパティーを探すことによって(その setterメソッドを呼び出して)ActionForm(のサブクラスとして作成されて いるBean)のプロパティーに設定したあと、Actionクラス(のサブクラスとして 作成されているクラス)のexecute()メソッドを呼び出し、その引数にActionForm (のサブクラスとして作成されているBean)を渡します。 これは、struts-config.xmlの指定にしたがって行われますので、前回お話した ように、struts-config.xmlの中に -------------------------------------------------------- <action path="/processSimple" type="examples.simple.ProcessSimpleAction" name="simpleForm" scope="request" input="/jsp/simple/Simple.jsp" cancellable="true" validate="true"> <forward name="success" path="/jsp/simple/SimpleResults.jsp"/> </action> -------------------------------------------------------- という記述があると、FORMのデータをsimpleFormすなわちSimpleActionFormの インスタンス(Bean)の各プロパティーに設定し、それをProcessSimpleActionの execute()メソッドの引数に渡すことになります。 なお、struts-config.xmlでvalidate="true"になっている場合、Actionクラス(ここ ではProcessSimpleAction)のexecute()メソッドが呼び出される前に、ActionForm (ここではname="simpleForm"で指定されているsimpleForm=SimpleActionFormの インスタンス)のvalidate()メソッドが実行されることになっています。 では、そのvalidate()メソッドを見てみましょう。SimpleActionFormクラスのソース・コード の真ん中あたりに下記のようにコーディングされています。 -------------------------------------------------------- public ActionErrors validate( ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); // Name must be entered if ((name == null) || (name.length() < 1)) { errors.add("name", new ActionMessage("errors.name.required")); } // Secret Phrase must be entered if ((secret == null) || (secret.length() < 1)) { errors.add("secret", new ActionMessage("errors.secret.required")); } return (errors); } -------------------------------------------------------- これらは、とりあえずnameプロパティーやsecretプロパティーの値がそれぞれnullか あるいは値の長さが1より小さい(つまり0)のときにエラー・メッセージを書くよう にしていますが、validate()メソッドの詳細については、また後ほど詳しくお話いた します。 (続く) では、今日はここまでにします。 何か、わからないところがありましたら、下記のWebページまで質問を お寄せください。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ★ホームページ: http://www.flsi.co.jp/Java_text/ ★このメールマガジンは 「まぐまぐ(http://www.mag2.com)」 を利用して発行しています。 ★バックナンバーは http://www.flsi.co.jp/Java_text/ にあります。 ★このメールマガジンの登録/解除は下記Webページでできます。 http://www.mag2.com/m/0000193915.html ★このメールマガジンへの質問は下記Webページにて受け付けて います。わからない所がありましたら、どしどしと質問をお寄 せください。 http://www.flsi.co.jp/Java_text/ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ Copyright (C) 2008 Future Lifestyle Inc. 不許無断複製 |