Jac*_*ton 28 html java jsp loops for-loop
我想循环遍历"节日" 的ArrayList,并使用get方法获取其信息,打印出所有值.出于某种原因,当我使用此代码时,它将始终选择"0"值而不是增加循环.
如果我将值硬编码为"get(1)",它将获得正确的值,因此我的问题显然与语法有关.
<h1>All Festival Information</h1>
<jsp:useBean id="allFestivals" type="java.util.ArrayList" scope="session" />
<table border="1">
<tr>
<td>Festival Name:</td>
<td>Location:</td>
<td>Start Date:</td>
<td>End Date:</td>
<td>URL:</td>
</tr>
<% for(int i = 0; i < allFestivals.size(); i+=1) { %>
<tr>
<td>${allFestivals.get(i).getFestivalName()}</td>
<td>${allFestivals.get(i).getLocation()}</td>
<td>${allFestivals.get(i).getStartDate()}</td>
<td>${allFestivals.get(i).getEndDate()}</td>
<td>${allFestivals.get(i).getURL()}</td>
</tr>
<% } %>
</table>
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 58
你的具体问题是由于你把沮丧的和旧学校的小 脚本 <% %>与其继任者EL 混合在一起引起的${}.它们不共享相同的变量范围.它allFestivals在scriptlet作用域中不可用,并且i在EL作用域中不可用.
您应该安装JSTL(< - 单击链接获取指示)并在JSP顶部声明它,如下所示:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
Run Code Online (Sandbox Code Playgroud)
然后按如下方式迭代列表:
<c:forEach items="${allFestivals}" var="festival">
<tr>
<td>${festival.festivalName}</td>
<td>${festival.location}</td>
<td>${festival.startDate}</td>
<td>${festival.endDate}</td>
<td>${festival.URL}</td>
</tr>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
(注意可能的XSS攻击漏洞,相应使用<c:out>)
不要忘记删除了<jsp:useBean>,因为它没有绝对的价值在这里,当你使用servlet作为模型和视图控制器.这只会导致混乱.另请参阅我们的servlets维基页面.此外,您可以通过以下条目自行帮助禁用scriptlet,web.xml以便您不会意外地使用它们:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
</jsp-config>
Run Code Online (Sandbox Code Playgroud)
Saj*_*ran 16
做这个
<% for(int i = 0; i < allFestivals.size(); i+=1) { %>
<tr>
<td><%=allFestivals.get(i).getFestivalName()%></td>
</tr>
<% } %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
149531 次 |
| 最近记录: |