我找到了将 java 变量传递给 jstl 的代码,如下所示:-
<%
String str = "abc";
pageContext.setAttribute("str", str);
%>
为了在 jstl 标签中获取该值,我们将不得不使用如下代码:-
<c:out value="${str}"/>
我的主要问题是,如果有任何其他方法可以将值从 java 传递到 jstl?
我找到了将 java 变量传递给 jstl 的代码,如下所示:-
<%
String str = "abc";
pageContext.setAttribute("str", str);
%>
为了在 jstl 标签中获取该值,我们将不得不使用如下代码:-
<c:out value="${str}"/>
我的主要问题是,如果有任何其他方法可以将值从 java 传递到 jstl?
它会查找 pageContext、请求属性、会话属性、应用程序上下文以进行变量解析,因此您可以将值放入其中的任何一个
在此示例中,您将其放入pageContext
来自我们的EL wiki
${str}
与“原始”scriptlet 代码中的以下内容基本相同(以下示例为简单起见,实际上反射 API 用于获取方法并调用它们):
其中PageContext#findAttribute()
分别扫描PageContext
(页面范围)、HttpServletRequest
(请求范围)、HttpSession
(会话范围)和ServletContext
(应用范围)的属性,直到找到第一个非空值。请注意,当值为 null 时它不会打印“null”,也不会NullPointerException
像使用 scriptlet 时那样抛出不同。换句话说,EL 是空安全的。
您没有将值传递给 JSTL,而是在设置作用域属性。您可以将属性设置为request
,session
也context
可以将request
参数传递给 JSP。