小编典典

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

jsp

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

这也不起作用。

有任何想法吗?


阅读 241

收藏
2020-06-08

共1个答案

小编典典

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

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

我不确定是否有隐式对象以这种方式检查所有范围{xxx}

2020-06-08