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

一些框架( Spring,Tomcat本身)添加认情况下不能在EL表达式中使用的servlet请求属性.一个例子是
javax.servlet.forward.context_path = /myWebapp

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

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

但是这没有用,因为EL解析器期望javaxto是对象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']}" />

这也不起作用.

有任何想法吗?

解决方法

如果你知道属性的范围,那么你可以从适当的隐式对象中获取它,例如
${requestScope['javax.servlet.forward.context_path']}

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

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...