Java 刷新时重置scriplet变量
我有一张桌子,我想把这些行编号 在我的jsp中,我有如下内容:Java 刷新时重置scriplet变量,java,jsp,scriptlet,Java,Jsp,Scriptlet,我有一张桌子,我想把这些行编号 在我的jsp中,我有如下内容: <%! int i = 0; %> <c:forEach items="${clients}" var="client"> <tr> <td align="center"><%= ++i %></td> <td><c:out value="${client.nomPrenom}"/>&l
<%! int i = 0; %>
<c:forEach items="${clients}" var="client">
<tr>
<td align="center"><%= ++i %></td>
<td><c:out value="${client.nomPrenom}"/></td>
....
....
我的问题是当我刷新页面时,变量I没有重置为0。它继续++
我做错了什么?服务器容器将JSP转换为servlet。每次刷新页面时,都会调用jsp服务 将JSP转换为servlet代码:
public class HelloWorld2$jsp extends HttpJspBase {
//code declare inside <%! %> method goes here
public void _jspService(HttpServletRequest request,
HttpServletResponse response)
{
// code declare inside <% %> method goes here
}
}
公共类HelloWorld2$jsp扩展了HttpJspBase{
//这里是代码声明内部方法
public void\u jspService(HttpServletRequest),
HttpServletResponse(响应)
{
//这里是代码声明内部方法
}
}
而不是
<%! int i = 0; %>
使用以下代码:
<% int i = 0; %>
您可以按如下方式使用jstl,因为几十年来不建议使用scriplets
<c:forEach items="${clients}" var="client" varStatus="loop">
<tr>
<td align="center"><c:out value="${loop.index}" /></td>
<td><c:out value="${client.nomPrenom}"/></td>
</tr>
</ c:forEach>
有关使用jstl和EL的更多信息,请参见,非常感谢您的回答。我现在乱涂乱画很糟糕,但我也确实不知道如何避免它们。我想你的链接会对我很有帮助;-)