使用<s:iterator>在多列

时间:2017-01-31 17:10:12

标签: jsp arraylist struts2 jstl ognl

我正在尝试在多个表列上填充ArrayList,这最初是在我们的旧页面上使用Scriptlets完成的,但我知道现在这种做法不受欢迎。我在使用struts标签翻译它时遇到了麻烦。

我希望桌子像这样结束,

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

这是原始的scriptlet代码:

<% 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>

1 个答案:

答案 0 :(得分:0)

您需要像这样设置索引的ovn变量

<s:set var="stringIndex" value="%{#status.index++}"/>