您不能在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创建脚本变量的标记功能:
<c:set var="fname" value="${result.fname}" /><jsp:useBean id="fname" type="java.lang.String"/><% System.out.println(fname); %>
请注意,EL变量和scriptlet变量最初指向相同的String。但是在scriptlet代码中更改字符串将更改其指向的值,而EL变量保持不变。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)