在刷新时重置scriptlet变量

时间:2014-09-30 05:33:28

标签: java jsp scriplets

我有一张桌子,我想要对这些线进行编号。

在我的jsp中,我有类似的东西:

<%! int i = 0; %> 
 <c:forEach items="${clients}" var="client">  
    <tr>  
       <td align="center"><%= ++i %></td>  
       <td><c:out value="${client.nomPrenom}"/></td>  
....

我的问题是当我刷新页面时,变量i没有重置为0.继续++

我做错了什么?

2 个答案:

答案 0 :(得分:2)

你可以使用jstl做到这一点,因为几十年来不建议使用scriplet

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

请参阅How to avoid Java code in JSP files?以了解有关使用jstl和EL

的更多信息

答案 1 :(得分:1)

您的JSP由服务器容器转换为servlet。每次刷新页面时都会调用_jspService

将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

        }
    }

而不是

<%! int i = 0; %> 

使用以下代码:

 <% int i = 0; %>