使用JSTL标记转义JSP EL(点字符)

时间:2011-07-15 09:38:54

标签: java jsp jstl el

某些框架(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']}" />

也不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:8)

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

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

我不确定是否有一个隐式对象以{xxx}的方式检查所有范围。