在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

回到顶部