Strutsメッセージのまとめ-(4)

前回(Strutsメッセージのまとめ-(3))からの続きです。

4.validateでのエラーメッセージ

今回紹介するvalidateでのエラーメッセージは、妥当性検証時に発生するエラーメッセージです。
ActionFormにセットさせない場合に、使用するメッセージです。

ところで、ActionFormのvalidateメソッドは、古いStrutsから存在する妥当性検証の機能です。
validator(次回説明)を使えば、validateメソッドを使わなくてもよいのですが、
validateメソッドの方が、簡潔で分かりやすい点もあるため、まだ利用価値はあります。

validateメソッドは、ActionErrorsというメッセージの器を使用します。
3.の説明のときには、
「ActionErrorsは古い形式のクラスだからもう使わない。代わりにActionMessagesを使う」
と説明したのですが、validateメソッドではまだ使われています。

validateメソッドは、ActionFormに記述します。
スーパークラスActionFormに中身なしで実装されているので、これをオーバーライドします。

public ActionErrors validate(
	ActionMapping mapping, HttpServletRequest request) {

戻り値として、ActionErrorsを返します。
このメソッド内で妥当性検証を行い、1件もエラーメッセージが登録されていなければ、妥当性検証をパスしたことになります。
エラーがある場合にはメッセージを登録します。

ここでは、2つのフィールド(text1,text2)について、必須入力、数値チェックを行います。


//入力データの妥当性検証
ActionErrors errors = new ActionErrors();
if (text1 == null || text1.equals("")){
	//必須入力
	errors.add(ActionMessages.GLOBAL_MESSAGE,
			new ActionMessage("msg4.required", "text1"));
}
if (text2 == null || text2.equals("")){
	//必須入力
	errors.add(ActionMessages.GLOBAL_MESSAGE,
			new ActionMessage("msg4.required", "text2"));

} else if (!text2.matches("\\d+")){
	//要数値
	errors.add(ActionMessages.GLOBAL_MESSAGE,
			new ActionMessage("msg4.numeric", "text2"));
}

メッセージの作成の仕方は、3.のときと同じ作り方です。
作成したActionErrorsを戻り値として返却します。

JSPでの利用方法は、3.のときと全く同じです。
<html:messages>タグを使ってもよいですし、<html:errros>タグを使ってもOKです。
今回は、<html:messages>タグを使っています。


<html:messages id="msg">
	<li style="color: red"><bean:write name="msg" /></li>
</html:messages>

validateメソッドは、入力データに対するチェックを行うものです。
Actionが呼び出される前に検証が行われ、入力エラーの場合は、Actionを呼び出さずに入力画面に戻ります。
この設定はstruts-configに記述します。


<action path="/msg4" type="Msg4Action" name="Msg4Form"
	scope="request" validate="true" input="/msg4.jsp">
	<forward name="success" path="/msg4.jsp"/>
</action>

validate属性がtrueのときに検証が行われます。
といっても既定はtrueなので、省略しても、validateメソッドを記述すれば検証が行われます。

input属性は、検証エラー時に遷移する先を記述しています。

まとめると、検証を行うタイミングが用意されているだけで、Actionでエラーメッセージを記述する方法と同じです。
validateの仕組みに乗っかることで、本来のActionの処理と、入力チェックの処理を、明確に分けることができます。

サンプルプログラムはStrutsMsg4.zipです。

次回は、validateをさらに強力にしたvalidatorでのエラーメッセージです。
仕組みが複雑で分かりにくいのですが、設定だけで妥当性検証ができる優れた機能です。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)