【问题标题】:Escape JSP EL using JSTL tags (dot character)使用 JSTL 标签(点字符)转义 JSP EL
【发布时间】:2011-10-06 00:27:42
【问题描述】:

一些框架(Spring、Tomcat 本身)添加了默认情况下不能在 EL 表达式中使用的 servlet 请求属性。一个例子是

javax.servlet.forward.context_path = /myWebapp

所以,要使用 JSTL 获取值,我通常会使用

<c:out value="${javax.servlet.forward.context_path}" />

但这不起作用,因为 EL 解析器期望 javax 是对象 A 的键,而 servlet 是该对象的属性(等等)。

所以我的问题是:如何转义点字符?

我尝试过使用

<c:out value="${javax\.servlet\.forward\.context_path}" />

但这也不起作用,并从 EL 解析器引发错误。

我知道在处理地图时我可以使用类似的东西

<c:out value="${aMap['key.from.map.with.dots']}" />

但这不适用于请求中的第一级对象,因为我也尝试过使用

<c:out value="${['javax.servlet.forward.context_path']}" />

这也不起作用。

有什么想法吗?

【问题讨论】:

    标签: java jsp jstl el


    【解决方案1】:

    如果你知道属性的范围,那么你可以从适当的隐式对象中获取它,例如

    ${requestScope['javax.servlet.forward.context_path']}
    

    不过,我不确定是否有一个隐式对象可以像 {xxx} 那样检查所有范围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多