在JSTL中使用的Java ArrayList()
我想要foreach项目添加数组列表
<sql:query var="query" dataSource="${db}"> select fname, lname from users where fname='ali'
</sql:query>
<c:forEach items="${query.rows}" var="result">
<%
ArrayList l= new ArrayList();
l.add("${result.fname}");
l.add("${result.lname}");
for(int i=0; i<l.size(); i++)
{
out.println(l.get(i));
}
%>
</c:forEach>
输出结果:
${result.fname} ${result.lname} ${result.fname} ${result.lname} ${result.fname} ${result.lname}
怎么了 ?
回答:
保存的值${result.fname}
用<c:set>
在页面范围内。并在scriptlet中使用变量。
例如
<c:forEach items="${query.rows}" var="result"> <c:set var="lname" value="${result.lname}" />
<c:set var="fname" value="${result.fname}" />
<%
ArrayList l= new ArrayList();
l.add((String)pageContext.getAttribute("fname"));
l.add((String)pageContext.getAttribute("lname"));
for(int i=0; i<l.size(); i++)
{
out.println(l.get(i));
}
%>
</c:forEach>
有关更多信息,请访问http://docs.oracle.com/javaee/1.4/tutorial/doc/JSTL4.html
http://javapapers.com/jsp/jsp-life-cycle-
explain/
http://docs.oracle.com/cd/E13222_01/wls/docs81/taglib/handler.html
EL属性存储在范围-页面,请求,会话,应用程序中。<c:set>
标签示例未指定范围,因此可以这样获得:
<c:set var="fname" value="${result.fname}" /> <%
String fname = (String)pageContext.getAttribute("fname");
System.out.println(fname);
%>
或者,利用useBean
创建脚本变量的标记功能:
<c:set var="fname" value="${result.fname}" /><jsp:useBean id="fname" type="java.lang.String"/>
<%
System.out.println(fname);
%>
请注意,EL变量和Scriptlet变量最初指向相同的String。但是在scriptlet代码中更改字符串将更改其指向的值,而EL变量保持不变。
以上是 在JSTL中使用的Java ArrayList() 的全部内容, 来源链接: utcz.com/qa/399521.html