Strutsのnestedタグを使う

今のところ、nestedといってもnested:iterateタグについてのみの紹介です。
logicタグの紹介ページがまだないので、ここで nested:iterateの元になるlogic:iterateタグについてメモします。 logic:iterateタグでは、繰り返しの処理対象となるコレクションを、 次のいずれかの方法で指定しなくてはいけません:

  • collection属性で、コレクションデータを直に書く。
  • name属性に、自分自身がコレクションである、(session等に格納された) Beanオブジェクトの(そのスコープにおける)属性名を書く。
  • name属性に、コレクションを自分のプロパティとして持つBeanオブジェクトの属性名を、 property属性に、そのプロパティの名前を書く。
nested:iterateは、上記のうちの特に3番目の記述を簡素化する目的で使います。

<%@ page language="java" contentType="text/html;charset=Windows-31J" %>
<%@ page pageEncoding="Windows-31J" %>
<%@ taglib prefix="bean"  uri="/WEB-INF/struts-bean.tld" %>
<%@ taglib prefix="html"  uri="/WEB-INF/struts-html.tld" %>
<%@ taglib prefix="nested" uri="/WEB-INF/struts-nested.tld" %>
<html><body>
<script language="JavaScript">
function go(k){
    document.FormBeanC.targetIndex.value = k;
    document.FormBeanC.submit();
    return false;
}
</script>

<html:form action="/ActionC">
<html:hidden property="targetIndex" />
<table border="1">
  <tr bgcolor="#cccccc">
    <th>コード</th><th>名称</th><th>送信先メールアドレス</th>
  </tr>
  <nested:iterate name="FormBeanC" property="recordList" indexId="index">
  <tr>
    <td>
      <a href="#" onClick="return go(<%= index %>)">
      <nested:write property="shitenCode" />
      </a>
    </td>
    <td><nested:write property="shitenName" /></td>
    <td><nested:write property="mailAddress" /></td>
  </tr>
  </nested:iterate>
</table>
<br>
</html:form>
</body>
</html>

nestedタグでは、name属性を省略できます。 この場合、自分を囲む上位のBeanを指定したとみなされます。
といっても何のことやら分からないので一番ありふれた例で言い直すと、 nestedタグの部分をhtml:formタグで囲んでいるとすると、 nested:iterateのname属性には、html:formのアクションフォームBeanが暗黙に指定されたとみなされます。
nestedタグにはnested:rootというものもあり、これでプロパティ階層の基点となるBeanを指定することもできます。

<%@ page language="java" contentType="text/html;charset=Windows-31J" %>
<%@ page pageEncoding="Windows-31J" %>
<%@ taglib prefix="bean"  uri="/WEB-INF/struts-bean.tld" %>
<%@ taglib prefix="html"  uri="/WEB-INF/struts-html.tld" %>
<%@ taglib prefix="nested" uri="/WEB-INF/struts-nested.tld" %>
<html><body>
<html:form action="/ActionC" method="get">
事務所に居る時間帯にチェックを入れ、送信ボタンを押して下さい。<br>
<input type="submit" value="送信">

<table border="1">
<tr bgcolor="#cccccc">
<th>No</th>
<th>ユーザ</th>
<th>朝</th><th>昼</th><th>夕方</th><th>夜</th>
</tr>
<nested:iterate name="FormBeanC" property="recordList" indexId="index">
  <nested:hidden property="userId" />
<tr>
  <td><%--bean:write name="index" --%><%= index.intValue() + 1 %></td>
  <td><nested:write property="userName" /></td>
  <td>
    <nested:checkbox property="ckasa" value="1" />
  </td>
  <td>
    <nested:checkbox property="ckhiru" value="1" />
  </td>
  <td>
    <nested:checkbox property="ckyu" value="1" />
  </td>
  <td>
    <nested:checkbox property="ckyoru" value="1" />
  </td>
  </tr>
</nested:iterate>
</table>
</html:form>
</body></html>

Server Side Java Index Top

(first uploaded 2003/12/28 last updated 2003/12/28, URANO398)

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル