迭代arraylist并通过jstl将值传递给整个表

时间:2012-07-02 11:31:16

标签: jsp jstl

我的jsp页面中有一个HTML表格。这包含文本字段和下拉框。 从我的servlet中,我想传递一个名为myData的字符串的arraylist。

因此我尝试使用foreach将数据传输到我的html表:

<table border="1" >
  <c:forEach items="${myData}" var="result">
  <tr>
    <td><input name="from0" type="text" value="${result}"/></td>
  </tr>

  <tr>
     <td>
    <select name="from8" id="from8" value="${result}">
       <option>Yes</option>
       <option>No</option>
    </select>
      </td>
  </tr>
  </c:forEach>
</table>

arraylist是一个简单的字符串arraylist:

ArrayList<String> output = new ArrayList<String>();
//populate arraylist with values here

//forward the arraylist of strings
request.setAttribute("myData ", output);
request.getRequestDispatcher("Home.jsp").forward(request, response);

不幸的是,输出会生成多个表,这些表的值都与我的arraylist中的每个元素相对应。

1 个答案:

答案 0 :(得分:1)

根据您提供的信息,我试图恢复您的情况。老实说,我做不到。这是我尝试恢复的原因:

<%
    ArrayList output = new ArrayList();
    output.add("Yes");
    output.add("No");
    request.setAttribute("myData", output);
%>
<table border="1">
  <c:set var="counterVar" value="0"/> //added because form field names and ids -in genral- must be unique.
  <c:forEach items="${myData}" var="result">
  <tr>
    <td><input name='from<c:out value="${counterVar}"/>_text' type="text" value='<c:out value="${result}"/>'></td>
  </tr>

  <tr>
     <td>
    <select name='from<c:out value="${counterVar}"/>_select' id='from<c:out value="${counterVar}"/>' value='<c:out value="${result}"/>'>
       <option value="Yes">Yes</option>
       <option value="No">No</option>
    </select>
      </td>
  </tr>
  <c:set var="counterVar" value="${counterVar + 1}"/>
  </c:forEach>
</table>

这会产生一个好看的表格。你能提供一个问题的示例链接吗?