The implementation crashes because of an incorrect type coersion from java type char. To reproduce make a controller and set a char attribute. // Controller code char tChar = 't'; request.setAttribute("tChar", tChar); // Now in JSP enter this fragment <!-- JSP Frag --> Prints t ${tChar} Crashes <c:if test="${tChar == 't'}"> inside </c:if> <!-- End Frag --> It crashes with this error: javax.servlet.jsp.el.ELException: An exception occured trying to convert String "t" to type "java.lang.Long"
I'd recommend sending an email to taglibs-user if you have questions about type coercions in EL (EL != Java). For equality operators, if any of the operands is a "IntegerType" (byte, char, short, integer, long or their boxed forms), both operands are attempted to be converted to java.lang.Long before comparison. Chapter 2 of the JSP 2.0 spec is about EL.