基本
- struts-config.xml
データソース情報、フォーム情報、アクションクラス(+表示される画面)情報などを定義。 - Formクラス
フォーム。jspの項目にgetとsetメソッドを準備する。しないと怒られる。
DynamicActionFormを使えば書かなくていい。あまり使われない意味がわからない。 - Actionクラス
org.apache.struts.action.Actionを継承してモデルへの入り口兼出口となるクラス
入力値チェック(Validator)
追加するもの
- struts-config.xml
プラグインを追加 -
<plug-in className="org.apache.struts.validator.ValidatorPlugIn" >
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
<set-property property="stopOnFirstError" value="true" />
</plug-in>
- ActionFormのスーパークラスをValidatorFormに変更
入力値チェックを入れたい画面のActionFormの継承クラスを変更 - validation.xmlを編集
自分で作ってWEB-INFの下に置く。具体的にどんなチェックをしたいかをルールに従って書くだけ。 - validator-rules.xmlをもらってくる
だいたいサンプルに入ってるからそのままコピーしてWEB-INFの下に置く。validation.xmlとセットで使うもの(具体的な定義)。 - エラーメッセージを用意
メッセージプロパティファイルにエラー関連のメッセージを追加。サンプルのをそのままコピーして自分のに追加すれば大丈夫。 - struts-config.xml
アクション要素にValidatorチェックでエラーになったときの先(input属性)、Validatorするか否か(validate)を追加
<action path="/login" type="test.action.LoginAction"
name="loginForm" scope="request" input="/init.do" validate="true">- JSPの変更
サーバサイドで検証して画面にベタでメッセージを表示させていいなら
・JSPの出力した個所に<html:errors />と書く
JavaScriptで検証してポップアップ表示させたいなら
<html:javascript formName="loginForm" />
ジャバスクリプトを使う。そいう宣言。
formNameはstruts-config.xmlのformで書いてる論理名
<html:form action="/login" onsubmit="returnvalidateLoginForm(this);">
関数名はvalidate+フォーム名の頭大文字ってとこに注意!!