2011-07-15 52 views
6

某些框架(Spring,Tomcat本身)添加了默認情況下無法在EL表達式中使用的servlet請求屬性。一個例子是使用JSTL標記(dot字符)逃脫JSP EL

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']}" /> 

嘗試這也不起作用。

任何想法?

回答

8

如果您知道該屬性的範圍,則可以從相應的隱式對象(例如,

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

我不知道,如果有,檢查所有範圍在{xxx}的方式做一個隱含的對象,雖然。