2017-01-31 7 views
1

複数の表の列にArrayListを設定しようとしていますが、これはもともと古いページのスクリプトレットを使用して行っていました。そして、strutsタグを使用して翻訳するのに問題があります。<s:iterator>を使用して複数の列に動的arraylistを設定する

私はこれは、元のスクリプトレットのコードである

Checkbox 1 Name 1 Checkbox 2 Name 2 
Checkbox 3 Name 3 Checkbox 4 Name 4 
etc.... 

、テーブルはこのように終わるしたい:

<% for (int j=0; j < getDocumentList().length; j++) { 
    setPacket(j); 
    setStringIndex(Integer.toString(j)); 
%> 
<tr> 
    <td><input type="checkbox" name="displayTag<%= getStringIndex() %>"/></td> 
    <td class="labelText"><%= getFormName() %></td> 
    <% 
     j++; 
     if (j < getDocumentList().length) { 
      setPacket(j); 
      setStringIndex(Integer.toString(j)); 
    %> 
    <td><input type="checkbox" name="displayTag<%= getStringIndex() %>"/></td> 
    <td class="labelText"><%= getFormName() %></td> 
    <% } %> 
</tr> 
<% } %> 

編集:ここでの最終的な形で動作するコードです!

<table width="100%" cellspacing="0" cellpadding="0" border="0"> 
    <tr> 
     <td class="maintain_test_info_table_subholder width5per"><fmt:message key="column.select"/></td> 
     <td class="maintain_test_info_table_subholder width40per"><fmt:message key="column.docname"/></td> 
     <td class="maintain_test_info_table_subholder width5per"><fmt:message key="column.select"/></td> 
     <td class="maintain_test_info_table_subholder width40per"><fmt:message key="column.docname"/></td> 
    </tr> 
    <s:iterator value="documentsList" var="documentList" status="status"> 
     <s:if test="#status.index == 0"> 
      <s:set var="docIndex" value="%{#status.index}" /> 
     </s:if> 
     <s:else> 
      <s:set var="docIndex" value="%{#docIndex+1}" /> 
     </s:else> 
     <c:set var="rowClass" value="row_even"/> 
     <s:if test="#status.odd == true"> 
      <c:set var="rowClass" value="row_odd"/> 
     </s:if> 
     <s:if test="%{#documentListSize > #docIndex}">  
      <tr class="${rowClass}"> 
       <s:hidden name="%{'documentsList['+#docIndex+'].documentId'}" />    
       <s:hidden name="%{'documentsList['+#docIndex+'].documentName'}" /> 
       <s:hidden name="%{'documentsList['+#docIndex+'].documentSelected'}" /> 
       <td class="tablecell_middle width5per" > 
        <input type='checkbox' id='displayTag_${docIndex}' value="${documentsList[docIndex].documentSelected}"/> 
       </td> 
       <td class="tablecell_middle width40per" id='documentName_${docIndex}'> 
        <c:out value="${documentsList[docIndex].documentName}"/> 
       </td> 
       <s:set var="docIndex" value="%{#docIndex+1}" /> 
       <s:if test="%{#documentListSize > #docIndex}"> 
        <s:hidden name="%{'documentsList['+#docIndex+'].documentId'}" />    
        <s:hidden name="%{'documentsList['+#docIndex+'].documentName'}" /> 
        <s:hidden name="%{'documentsList['+#docIndex+'].documentSelected'}" /> 
        <td class="tablecell_middle width5per" > 
         <input type='checkbox' id='displayTag_${docIndex}' value="${documentsList[docIndex].documentSelected}"/> 
        </td> 
        <td class="tablecell_middle width40per" id='documentName_${docIndex}'> 
         <c:out value="${documentsList[docIndex].documentName}"/> 
        </td> 
       </s:if> 
      </tr> 
     </s:if> 
    </s:iterator> 
</table> 

答えて

0

あなたはこの

後半の応答のため申し訳ありません
<s:set var="stringIndex" value="%{#status.index++}"/> 
+0

のようなインデックスのためのあなたのovn変数を設定する必要があります。イテレータの最初または最後に設定する必要がありますか?そして第二に、私は​​のステートメントでそれをどのように使用しますか?それはdocumentListのようなものでしょうか?[stringIndex] documentName – JRHigdon

+0

これまでのコードでは、あなたはそれを何回か設定します。イテレータの本体の内側にある必要があります。 –

+0

私は自分のコードを編集して、今どこにいるのかを示しています。問題は、outステートメントにインデックスを追加してページに印刷しようとすると、空白になることです。私が隠しタグでそれを宣言する方法にそれをミラーリングしようとすると、コアタグはそれを好まない。コア出力タグの代わりに使用できるstrutsaタグはありますか? – JRHigdon

関連する問題