gpt4 book ai didi

java - JSP 标记文件能否访问其调用 JSP 的 PageContext?

转载 作者:搜寻专家 更新时间:2023-10-30 21:30:09 25 4
gpt4 key购买 nike

如果我这样做:

<% pageContext.setAttribute("foo", "bar"); %>
<custom:myTag/>

看来我应该可以做到:

<%= pageContext.getAttribute("foo") %>

在 myTag.tag 内部 ... 但我当然不能,因为标记文件无法访问 pageContext(相反它可以访问 jspContext ...调用页面的 pageContext)。

现在,您可以通过 ELScript 访问 pageContext:

${pageContext}

但这并没有帮助,因为 ELScript 无法传递参数,所以您不能这样做:

${pageContext.getAttribute("foo")}

然而,事实上 ELscript 可以访问页面上下文,标签可以访问各种变量,如 jspContext,标签必须有某种方式来访问(以 scriptlet/Java 逻辑方式,不仅仅是在 ELScript 中)来自调用 JSP 的 pageContext 的属性。

有吗?

最佳答案

至于 EL,${pageContext.getAttribute("foo")} 仅适用于 EL 2.2。在此之前,正确的语法是 ${pageContext.foo} 或只是 ${foo}。另见我们的 EL wiki page .

但是,${pageContext} 并未在父 JSP 文件和 JSP 标记之间共享。每个都有自己的实例。

您可以或者将其设置为请求属性:

<% request.setAttribute("foo", "bar") %>
<custom:myTag />

在标签中

<%= request.getAttribute("foo") %>

或者,使用 EL

${requestScope.foo}

${foo}

或者,更好的是,您可以将其作为完全有值(value)的标签属性传递

<custom:myTag foo="bar" />

在标签中

<%@attribute name="foo" required="true" %>
${pageContext.foo}

或者只是

<%@attribute name="foo" required="true" %>
${foo}

关于java - JSP 标记文件能否访问其调用 JSP 的 PageContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7098141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com