ページ

2014年11月30日日曜日

Seasarしてみるさー 4 - バリデーション -

入力チェックの追加

前回のアクションフォームに入力チェックを追加してみる。
まずは、エラーがあった場合のエラー表示。

・input.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>入力画面</title>
</head>
<body>
<h1>入力画面</h1>
<html:errors/>
<s:form>
<html:textarea property="msg" cols="60" />
<s:submit value="保存" property="register" />
</s:form>
</body>

</html>

エラー表示する為の<html:errors/>を追加。
プロパティ毎にも設定できる。ex) <html:errors property=“msg” />

アクションフォームにアノテーションを設定。
public class RegisterForm {

@Required
public String msg;

}

@Requiredアノテーションで入力必須項目となる。
アクション側には@Executeアノテーションでvalidatorをtureにする必要がある。
    /**
     * 登録処理
     * 
     * @return competeへリダイレクト
     */
    @Execute(validator = true, input="input.jsp")
    public String register() {
    sessionDto.message = registerForm.msg;
    return "complete?redirect=true";

    }

第二引数はチェックエラー時の遷移先。
↓実行結果













次に独自の検証メソッドでチェックを行ってみる

独自の検証メソッドを使う場合は、アクションの@Executeアノテーションのvalidateに
検証メソッドを設定する。
検証メソッドは、アクションフォームに書くのが一般的らしい。

・RegisterForm
public class RegisterForm {

@Required
public String msg;
/**
* 独自のチェックメソッド
* <br>半角or全角のスペースを含んでいたらNG
* @return {@link ActionMessages}
*/
public ActionMessages mycheck() {
ActionMessages errors = new ActionMessages();
// メッセージが空白を含んでいたらNG
if (msg.contains(" ")
|| msg.contains(" ")) {
errors.add("msg", new ActionMessage("スペースを含んでいます。", false));
}
return errors;
}

}

・RegisterAction
    /**
     * 登録処理
     * 
     * @return competeへリダイレクト
     */
    @Execute(validate = "mycheck", input="input.jsp")
    public String register() {
    sessionDto.message = registerForm.msg;
    return "complete?redirect=true";

    }

↓実行結果












便利^^

0 件のコメント:

コメントを投稿