gpt4 book ai didi

java - 我如何确定 JSTL 表达式变量(pageContext 属性)起源于 IDEA?

转载 作者:行者123 更新时间:2023-11-30 07:38:25 26 4
gpt4 key购买 nike

我们有一个大量使用 JSTL 表达式和自定义标签库的应用程序,这意味着我们的 pageContext 属性几乎可以在任何地方设置。我如何确定它们的起源地?考虑这样的事情:

<c:out value="${ myObject['SOME_KEY'] }" />

我需要知道 myObject 来自哪里——它是如何进入 pageContext 的?我正在使用 IDEA,所以如果在 IDE 中有一个快捷方式来确定它,那将是最有帮助的。

编辑:

我不想知道范围,但实际上在哪个物理文件中设置了属性。几乎与 IDEA 右键单击​​上下文菜单中的 Find Usages... 功能相同。如果我三级包含深入到可能使用标签库和模板的 JSP,则可以在几乎任何地方设置 pageContext 中的属性集。我想找到该属性的用法和实例。

最佳答案

${myObject} 基本上解析为 jspContext.findAttribute("myObject")它分别在页面、请求、 session 和应用程序范围内搜索属性,并返回它找到的第一个非 null 值。

你可以让一个 IDE 多么聪明,它无法事先(在构建/编译期间)知道它被设置在哪个范围内。需要考虑的因素太多(可见的和不可见的)。找出这一点的唯一可靠方法是通过在运行时显式访问所需范围以编程方式执行此操作:

"myObject" is in:
<br>Page scope? ${not empty pageScope.myObject}
<br>Request scope? ${not empty requestScope.myObject}
<br>Session scope? ${not empty sessionScope.myObject}
<br>Application scope? ${not empty applicationScope.myObject}

上面的示例应该为实际设置的范围之一返回 true

关于java - 我如何确定 JSTL 表达式变量(pageContext 属性)起源于 IDEA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1888964/

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