如何使用count和JSTL ForEach动态创建表

时间:2013-02-09 00:33:55

标签: jsp foreach jstl

我想创建一个动态表,在提供no时接受book属性。在上一页输入的书籍。 但我没有得到任何东西。

这是我的代码:

<table>
<c:forEach begin="1" end= "${ no }" step="1" varStatus="loopCounter">
<tr>
<td>
<input type='text' name="isbn" placeholder="ISBN">
</td>
<td>
<input type="text" name="Title" placeholder="Title">
</td>
<td>
<input type="text" name="Authors" placeholder="Author">
</td>
<td>
<input type="text" name="Version" placeholder="Version">
</td>
</tr>
</c:forEach>
</table>

$ {no}是我要输入的图书数量。 我是新来的。对不起,如果标题不清楚。请帮忙。

3 个答案:

答案 0 :(得分:5)

你没有得到任何东西,因为你没有迭代你的书籍清单。此外,您每次迭代只打印大量<input type="text" />。您的代码应如下所示(假设您的图书清单为lstBooks且已初始化):

<table>
    <!-- here should go some titles... -->
    <tr>
        <th>ISBN</th>
        <th>Title</th>
        <th>Authors</th>
        <th>Version</th>
    </tr>
    <c:forEach begin="1" end= "${ no }" step="1" varStatus="loopCounter"
        value="${lstBooks}" var="book">
    <tr>
        <td>
            <c:out value="${book.isbn}" />
        </td>
        <td>
            <c:out value="${book.title}" />
        </td>
        <td>
            <c:out value="${book.authors}" />
        </td>
        <td>
            <c:out value="${book.version}" />
        </td>
    </tr>
    </c:forEach>
</table>

根据评论了解您的问题后,请确保${no}变量在request.getAttribute("no")处可用。您可以使用scriptlet(但这是bad idea)或仅使用<c:out value="${no}" />对此进行测试。

请注意,正如我所说,该变量应该可以通过request.getAttribute访问,不要将其与request.getParameter混淆。

顺便说一句,你可以设置一个变量,如果你知道它的值是这样的:

<c:set var="no" value="10" />

然后您可以使用${no}访问它。

更多信息:JSTL Core Tag

答案 1 :(得分:0)

假设您在“员工”下给出了地图List<Map<String, Object>>的列表

<caption>Emplyess Under You</caption>
<tr>
    <th>Employee Id</th>
    <th>First Name</th>
    <th>Last Name</th>
    <th>Designation
</tr>
<c:forEach  var="record"  items="${underEmployees}" > 
    <tr>
        <c:forEach var="entry" items= "${record}">
            <th><c:out value="${entry.value}"></c:out></th>
        </c:forEach>

    </tr>
</c:forEach>

答案 2 :(得分:0)

<table>
  <tr>
    <th>First name</th>
    <th>Last Name</th>
    <th>Age</th>
  </tr>
  <c:forEach items="${students }" var="student">
    <tr>
      <td>${student.firstName}</td>
      <td>${student.lastName }</td>
      <td>${student.age }</td>
    </tr>
  </c:forEach>
</table>