トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

SAStruts の入力チェック


入力チェック

http://yakinikunotare.boo.jp/orebase2/sastruts/input_check
http://d.hatena.ne.jp/i-takehiro/20080710/1215652817
http://ichitcltk.hustle.ne.jp/gudon/modules/pico_rd/index.php?content_id=11

 プリセットのチェックを使う

必須チェックとかならformの該当プロパティにアノテーションで

@Required
public String hoge;

項目の名称を指定したいときは

@Required(arg0=@Arg(key="お名前", resource=false))

などとする。

検証を実際に行うにはSAStruts/Actionでのメソッドにつけるアノテーションを

@Execute(validator=true, input="hoge.jsp")

このように印しておく必要がある。
inputに設定する値は、エラー時に表示する jsp を指定する。
基本的には action と同じでいいはず。

 JavaScriptでクライアント側で入力チェックする

jspでhtml:javascriptタグを使って、入力チェック用のJavaScript を自動生成する。
formName属性には、「アクション名 + Form + _ + メソッド名」を指定する。

<html:javascript formName="deptActionForm_insert" />

などとして、submitボタンを

<s:submit property="insert" clientValidate="true">create2</s:submit>

みたいな感じにする。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <html:javascript formName="deptActionForm_insert" />
      <link rel="stylesheet" type="text/css" href="${f:url('/css/global.css')}" />
    </head>
    <body>
      <html:errors />
      <s:form>
        <table class="tablebg">
          <tr>
            <td>deptNo</td>
            <td><html:text property="deptNo" /></td>
          </tr>
          <tr>
            <td>deptName</td>
            <td><html:text property="deptName" /></td>
          </tr>
          <tr>
            <td>loc</td>
            <td><html:text property="loc" /></td>
          </tr>
        </table>
        <!-- <input type="submit" name="insert" value="CREATE" clientValidate="true" />  -->
        <s:submit property="insert" clientValidate="true">create2</s:submit>
      </s:form>
      <br />
      <br />
      <s:link href="/dept/">list page</s:link>
    </body>
  </html>

 チェック用のメソッドを作る


フォームクラス

 class TestForm {
  ....
 public ActionMessages validate() {
   ActionMessages errors = new ActionMessages();
   int result = Integer.parseInt(salary);
   if (result % 3 != 0) {
     errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
       "errors.custom.salary"));
   }
   return errors;
 }

アクションクラス

 class TestAction {
  ....
 Execute(validate = "validate", input = "index.jsp")
   public String result() {
   return "result.jsp";
 }

エラーメッセージの表示

エラーメッセージを表示するには対象のjspに

<!-- エラーメッセージを一気に表示 -->
<html:errors />
<!-- hogeプロパティに関するエラーメッセージを表示 -->
<html:errors property="hoge"/>

のように書く。 または、アノテーションで直接指定する。

public class HogeForm implements Serializable{
    private static final long serialVersionUID = 1L;
 
    @Required(arg0=@Arg(key="お名前", resource=false))
    public String name;

resource = false は、「application_ja.properties」に登録されている項目かを表す。
application_ja.propertiesに登録せず使用する場合は

resource = false

とする。

[カテゴリ: プログラミング言語 > Servlet & Struts]

[通知用URL]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2013年06月02日 23時07分29秒