今天在jsp页面中使用了EL表达式,同时EL表达式在for循环中,但是EL表达式无法与java代码同时使用,所以记录一下如何把java中的变量传递过去。
示例:
<% for(int i=0;i<list.size();i++){ %> <tr> <td>${list[i].key1}</td> <td>${list[i].key2}</td> <td>${list[i].key3}</td> </tr> <% } %>
由于需要把list中的循环遍历输出,如上写法在el表达式中虽然语法没有发生错误,但是实际输出均为空。解决方法就是,在for循环中,把每一个 i 通过 pageContext.setAttribute() 方法,传递到页面中去。仅需添加一行即可,修改之后的代码如下:
<% for(int i=0;i<list.size();i++){ pageContext.setAttribute("i",i); //通过pageContext.setAttribute()方法将 i 传入视图中,即可被el表达式使用 %> <tr> <td>${list[i].key1}</td> <td>${list[i].key2}</td> <td>${list[i].key3}</td> </tr> <% } %>