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

Takeshi Motegi [E-MAIL ADDRESS DELETED]
2008年 9月 11日 (木) 18:41:34 JST


茂木と申します。

現在、sa-struts-tutorialのデータベースサンプルを元にして、複数Employee
の一括登録機能を作成しています(入力画面イメージを添付します)。

参考サイト コードなにがし:http://code.nanigac.com/source/wiki/view_title/597/%E3%80%8C%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%80%8D%E3%82%92%E8%BB%BD%E3%81%8F%E6%94%B9%E9%80%A0%E3%81%97%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%82%87%E3%81%86%EF%BC%88%EF%BC%96%EF%BC%89

で、登録内容確認ボタンがクリックされた時に以下の検証メソッドで、Nameが
未入力のものをチェックして、未入力のデータがあれば入力画面を再表示して、
未入力のテキストボックスだけを赤く(色付きに)したいと思っています。

こういったことをSAStrutsの機能で手軽に実装する方法はございますで
しょうか?


EmployeeForm.java(検証メソッド)
-------------
    public ActionMessages checkRows() {
        ActionMessages errors = null;
        for( EmployeeForm f : empInsertItems ) {
            if( f.name.length()==0 ) {
                errors = new ActionMessages();
                errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
                        "errors.required"));
                break;
            }
        }
        return errors;
    }
-------------

EmployeeAction.java(検証メソッドを使用するアクションメソッド)
-------------
    //一括登録内容確認画面表示用
    @Execute(validate="checkRows", input="edit_for_bulk_add.jsp")
    public String confirm_for_bulk_add() {
-------------

edit_for_bulk_add.jsp(入力画面)
-------------
<%@page pageEncoding="UTF-8"%>
<html>
<head>
<title>Employee Bulk Insert</title>
</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"
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>
-------------------------

以上、よろしくお願いいたします。
-------------- next part --------------
A non-text attachment was scrubbed...
Name: emp_blk_add3.jpg
Type: image/jpeg
Size: 11768 bytes
Desc: 無し
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20080911/a0392395/attachment-0001.jpg>


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