On 05/10/2015 14:08, Zorro wrote:
> Hi,
> 
> I installed Tomcat 8.0.27 last weekend and now using it I do get JSP
> compilation exceptions.
> 
> This is an example causing such an exception:
> <c:if test="${! (empty Active || Active == \"on\")}">
>         <c:set var="active" scope="page" value="" />
> </c:if>
> (Active is a String and c: means jstl/core)
> 
> If I change it to this
> <c:if test="${! (empty Active || Active == 'on')}">
> or
> <c:if test="${! (empty Active || Active == on)}">
> 
> Then no exception occurs anymore.
> 
> I expected
> <c:if test="${! (empty Active || Active == \"on\")}"> and
> <c:if test="${! (empty Active || Active == 'on')}">
> being proper code and
> <c:if test="${! (empty Active || Active == on)}">
> faulty coding.
> 
> Has this to do with the change handling  \${ vs \$ escaping in JSP and EL?

It has. Having reviewed the specs carefully, the JSP spec has to be used
up to ...${ and from }... but what appears between the braces is parsed
according to the rules of the EL spec. The rule about the use of quotes
in attribute values do not apply when parsing the EL.

I'd expect either of these to work:
<c:if test="${! (empty Active || Active == 'on')}">
<c:if test="${! (empty Active || Active == "on")}">

I'm surprised that
<c:if test="${! (empty Active || Active == on)}">

works. I wonder how the on is being interpreted.

Mark


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to