给出JSP页面的一部分:
<%! int index = 0; %>
<% int index = 1;
List<String> strings = new ArrayList<String> () ;
strings.add(0, "Zero");
strings.add(1, "One");
strings.add(2, "Two");
pageContext.setAttribute("strings", strings);
index = 2;
%>
${strings[index]}
输出是什么?
我认为输出将是&#34; One&#34; 但输出不会打印任何内容。
根据我的理解,pageContext中设置的变量也应该在外面可用。所以我试着跟着
${pageContext.getAttribute(strings[index])}
仍然没有输出。请有人指导我。
答案 0 :(得分:0)
表达式语言(EL)查找scopes并使用它们,例如页面,请求,会话或应用程序范围。
您可以在上面的页面范围(它是默认范围)中设置数组,但不要设置index
。所以它不适用于EL。您还需要在任何范围内设置索引变量。
int index = 1;
pageContext.setAttribute("strings", strings);
pageContext.setAttribute("index", index);
index = 2;
在这种情况下,您应该看到One
,因为设置页面范围的索引是1
。
您也可以使用JSTL尝试:
<c:set var="index" scope="page" value="1"></c:set> // scope="page" already default
<c:set var="strings" value="${['Zero','One','Two']}"></c:set>
${strings[index]}