2011-07-15 9 views
6

Algunos marcos (Spring, Tomcat en sí) añaden atributos de solicitud de servlet que no se pueden utilizar en una expresión EL por defecto. Un ejemplo seríaEscape JSP EL utilizando etiquetas JSTL (carácter de punto)

javax.servlet.forward.context_path = /myWebapp 

Por lo tanto, para obtener el valor usando JSTL que normalmente haría uso de

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

Sin embargo eso no funciona porque el analizador EL espera javax a ser la clave del objeto A y servlet ser una propiedad de ese objeto (y así sucesivamente).

Entonces mi pregunta es: ¿Cómo escapo del personaje de punto?

He intentado usar

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

pero que no funciona bien y genera un error del analizador EL.

sé que cuando se trata de mapas puedo usar algo como

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

pero eso no es trabajar con un primer nivel de objeto de la solicitud, ya que también he intentado usar

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

que tampoco funciona

¿Alguna idea?

Respuesta

8

si conoce el alcance del atributo, puede recuperarlo del objeto implícito apropiado, p. Ej.

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

no estoy seguro si hay un objeto implícito que comprueba todos los ámbitos de la manera que lo hace {xxx}, sin embargo.

Cuestiones relacionadas