m-namikiの日記

おもしろき こともなき世を おもしろく

SAStruts + S2JDBC

SAStrutsを現在のプロジェクトで採用しようとサンプルを色々作ってみているんだけど、これはやっぱり凄い。Cubbyでも思ったけど一度これに慣れちゃうと、他のには戻れないかもしれないなぁ。

で、一つ困っていることがある。
画面のイメージとしては、sa-struts-tutorialのemployee/index.jspがベースで、ただし編集がリンクではなく更新ボタン、かつ各行にチェックボックスが付いてて、チェックを入れて削除ボタンを押す感じ。

<table width="100%" border="1" cellspacing="0" cellpadding="3">
  <tr>
    <th>削除</th>
    <th>担当者ID</th>
    <th>担当者名</th>
    <th>最終ログイン時間</th>
    <th>最終ログアウト時間</th>
    <th>権限種別</th>
    <th>更新</th>
  </tr>
  <c:forEach var="user" items="${userList}">
  <s:form>
  <tr>
    <td align="center"><html:multibox property="checkDelete" value="${user.userId}"/></td>
    <td>${f:h(user.userId)}</td>
    <td>${f:h(user.userName)}</td>
    <td><fmt:formatDate value="${user.lastLoginDate}" pattern="yyyy/MM/dd HH:mm:ss"/>&nbsp;</td>
    <td><fmt:formatDate value="${user.lastLogoutDate}" pattern="yyyy/MM/dd HH:mm:ss"/>&nbsp;</td>
    <td>${f:h(user.attributeLabel)}</td>
    <td align="center"><input type="submit" name="goEdit" value="更新"></td>
    <html:hidden property="editUserId" value="${user.userId}"/>
  </tr>
  </s:form>
  </c:forEach>
</table>
<s:form>
<div align="right">
  <input type="submit" name="goInput" value="新規"/>
  <input type="submit" name="goDeleteConfirm" value="削除"/>
</div>
</s:form>

上の例では、各行毎をで括っているので、更新ボタンをクリックした場合はが取得できる。が、削除ボタンをクリックした場合は、当然checkDeleteの値が取得出来ない。じゃあということで、全体をを括るとcheckDeleteの値は取得出来るけど、どの行で更新ボタンをクリックしたのかが判断出来なくなってしまう。リンクの場合なら@ExecuteのurlPatternで値の取得は出来るけど、フォームのサブミットで同じようなことを出来る方法がないものか。
うーん、何か根本的に勘違いしている気がするけど、恥晒しついでにメモしておこっと。