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.のときと全く同じです。
タグを使ってもよいですし、タグを使ってもOKです。
今回は、タグを使っています。


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





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

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

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

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

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


    コメントを残す

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

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

    このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください