2011-07-15 16 views
6

Niektóre frameworki (Spring, Tomcat) dodają atrybuty żądań serwletów, których nie można używać domyślnie w wyrażeniu EL. Przykładem może byćEscape JSP EL przy użyciu znaczników JSTL (znak kropki)

javax.servlet.forward.context_path = /myWebapp 

Tak więc, aby uzyskać wartość za pomocą JSTL bym normalnie używać

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

Jednak to nie działa, ponieważ parser EL spodziewa javax być kluczem obiektu A i servlet być własnością tego obiektu (i tak dalej).

Moje pytanie brzmi: Jak mogę uciec z charakteru kropki?

Próbowałem za pomocą

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

ale to nie działa albo i zgłasza błąd z parsera EL.

wiem, że gdy mamy do czynienia z mapami mogę użyć czegoś jak

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

ale to nie działa z poziomu pierwszego obiektu z żądania, ponieważ ja również próbowałem przy użyciu

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

który też nie działa.

Wszelkie pomysły?

Odpowiedz

8

jeśli znasz zakres tego atrybutu, możesz go pobrać z odpowiedniego niejawnego obiektu, np.

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

Nie jestem pewien, czy istnieje niejawna obiekt, który sprawdza wszystkie zakresy w sposób {xxx} robi, choć.

Powiązane problemy