[Seasar-user:15748] Re: [SAStruts]DBへの複数情報一括登録処理におけるバリデーション

Takeshi Motegi [E-MAIL ADDRESS DELETED]
2008年 9月 12日 (金) 18:38:10 JST


お世話になっております。茂木です。

すいません自己解決しました。ActionMessagesクラスの仕様を
理解していませんでした。

Strutsで手軽に出来てしまうのですね。。。
以下のように変更を加えて、期待通りの動作を確認しました。

EmployeeForm.java(検証メソッド)
 ・ActionMessages#addの第一パラメータにテキストボックスの
name属性の値を設定するように変更
-------------
    public ActionMessages checkRows() {
        ActionMessages errors = new ActionMessages();
        int i=0;
        for( EmployeeForm f : empInsertItems ) {
            if( f.name.length()==0 ) {
                errors.add("empInsertItems[" + i + "].name", new
ActionMessage(
                        "errors.required"));
            }
            i++;
        }
        return errors;
    }
-------------


edit_for_bulk_add.jsp(入力画面)
 ・テキストボックス"name"に「errorStyleClass="err"」を追加
 ・"err"スタイルクラスを定義している'/css/sa.css'のlink追加
-------------
<%@page pageEncoding="UTF-8"%>
<html>
<head>
<title>Employee Bulk Insert</title>
<link rel="stylesheet" type="text/css" href="${f:url('/css/sa.css')}" />
</head>
<body>
<h4>一括登録入力</h4>
  <html:errors />
  <s:form>
    <table border="1">
        <tr>
            <th>Name</th>
            <th>JobType</th>
            <th>Salary</th>
            <th>Department</th>
        </tr>
        <c:forEach var="empInsertItems" items="${empInsertItems}">
            <tr>
                <td><html:text name="empInsertItems" property="name"
errorStyleClass="err" indexed="true" /></td>
                <td><html:select name="empInsertItems" property="jobType"
indexed="true">
                    <html:option value="CLERK">CLERK</html:option>
                    <html:option value="SALESMAN">SALESMAN</html:option>
                    <html:option value="MANAGER">MANAGER</html:option>
                    <html:option value="ANALYST">ANALYST</html:option>
                    <html:option value="PRESIDENT">PRESIDENT</html:option>
                </html:select></td>
                <td><html:text name="empInsertItems" property="salary"
indexed="true" /></td>
                <td><html:select name="empInsertItems"
property="departmentId" indexed="true">
                    <html:option value=""></html:option>
                    <c:forEach var="d" items="${deptItems}">
                        <html:option
value="${f:h(d.id)}">${f:h(d.name)}</html:option>
                    </c:forEach>
                </html:select></td>
            </tr>
        </c:forEach>
    </table>
    <br />
    <input type="submit" name="confirm_for_bulk_add" value="登録内容確認" />
    <input type="submit" name="index" value="戻る"/>
  </s:form>
  </body>
</html>
-------------------------


以上




Seasar-user メーリングリストの案内