【问题标题】:method for passing java variable value to jstl in jsp pagejsp页面中将java变量值传递给jstl的方法
【发布时间】:2024-01-09 16:37:01
【问题描述】:

我找到了将 java 变量传递给 jstl 的代码,如下所示:-

<%
String str = "abc";
pageContext.setAttribute("str", str);
%>

为了在 jstl 标签中获取该值,我们将不得不使用如下代码:-

<c:out value="${str}"/>

我的主要问题是,是否有任何其他方法可以将值从 java 传递到 jstl?

【问题讨论】:

    标签: jsp jakarta-ee jstl el


    【解决方案1】:

    它会查找 pageContext、请求属性、会话属性、应用程序上下文以进行变量解析,因此您可以将值放入其中任何一个

    在此示例中,您将其放入 pageContext

    来自我们的EL wiki

    ${str}
    

    与“原始”scriptlet代码中的以下内容基本相同(以下示例为简单起见,实际上反射API用于获取方法并调用它们):

    其中PageContext#findAttribute()分别扫描PageContext(页面范围)、HttpServletRequest(请求范围)、HttpSession(会话范围)和ServletContext(应用范围)的属性直到第一个找到非空值。请注意,当值为 null 时,它不会打印“null”,也不会抛出 NullPointerException,这与使用 scriptlet 时不同。换句话说,EL 是 null-safe

    【讨论】:

    • 是的,仅在同一页面中,因此 pagecontext.只是想确认是否有其他选择?
    • 另一种方法是将其作为 url 传递(例如:someurl.com?key=value 参数并作为 ${param.key} 访问它)
    • 好的,非常感谢,但如果还有其他选择,因为我不想将变量传递到 url..
    【解决方案2】:

    您不是在向 JSTL 传递值,而是在设置作用域属性。您可以将属性设置为requestsessioncontext,也可以将request 参数传递给JSP。

    【讨论】:

    • 是的,我正在设置范围属性,但是如果有其他方法可以执行类似的逻辑,请帮助我
    • 传递请求参数为,Jigar Joshi 在他的 cmets 中提到。
    最近更新 更多