入力チェックの追加
前回のアクションフォームに入力チェックを追加してみる。まずは、エラーがあった場合のエラー表示。
・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 件のコメント:
コメントを投稿