This question already has answers here:
Show JDBC ResultSet in HTML in JSP page using MVC and DAO pattern
(5个答案)
3年前关闭。
我想要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属性存储在范围内-页面,请求,会话,应用程序
或者,利用
请注意,EL变量和Scriptlet变量最初指向相同的String。
但是在scriptlet代码中更改字符串将更改其指向的值,而EL变量保持不变。
(5个答案)
3年前关闭。
我想要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}
怎么了 ?
最佳答案
您不能在scriptlet中使用jstl。
在页面范围内使用${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
标记的功能来创建scriptlet变量:<c:set var="fname" value="${result.fname}" />
<jsp:useBean id="fname" type="java.lang.String"/>
<%
System.out.println(fname);
%>
请注意,EL变量和Scriptlet变量最初指向相同的String。
但是在scriptlet代码中更改字符串将更改其指向的值,而EL变量保持不变。
07-27 13:25