2

我正在尝试了解有关 JSP 表达式评估的更多信息。如何以及哪些变量被确定在表达式访问范围内?

我有一个简单的 JSP(ELEvaluator 是一个方便的包装器)

<% String foo = "bar"; %>
<%= ELEvaluator.evaluate("${foo}", request, pageContext) %> //-> blank
<%= ELEvaluator.evaluate("${1 + 1}", request, pageContext %> // -> 2

这些 vars/objs 是否必须存在于请求 obj 中?还是在 pageContext/Evaluator 注册?

谢谢

4

1 回答 1

6

${foo}方法

  • 找到一个名为“foo”的页面范围属性,如果没有找到
  • 找到一个名为“foo”的请求范围属性,如果没有找到
  • 找到一个名为“foo”的会话范围属性,如果没有找到
  • 找到一个名为“foo”的应用程序范围属性

因此,如果您希望某个对象对 EL 可用,请将其存储在适当的范围内:

pageContext.setAttribute("foo", theObject);
// or
request.setAttribute("foo", theObject);
// or
session.setAttribute("foo", theObject);
// or
servletContext.setAttribute("foo", theObject);
于 2012-05-20T17:18:29.673 回答