I get a org.apache.jasper.JasperException: with the error: "The function string must be used with a prefix when a default namespace is not specified" when trying to compile the following within a JSP page: <foo:set var="bar" value="this $ is a { silly string ("/> "foo" is our own tablib, it seems that Jasper seems to think that the string provided to the value attribute contains some JSP/EL which it does not. If I change the page to be: <c:set var="bar" value="this $ is a { silly string ("/> Then I do not get this error. However I need to use my own taglib. In the foo.tld file, the "value" attribute of "set" has rtexprvalue=true. If I set this to false then the problem goes away. However I noticed that c.tld in standard.jar also has rtexprvalue=true for the "value" attribute of "set". Why the difference in behaviour ? We also wish to have rtexprvalue=true.
This bug is becoming a problem for us, since our query language uses "{" to express OR, and identifiers of the form foo:bar occur quite often. Users really have to go through some ugly workarounds to deal with this problem, and since the bug is in Jasper we can't do much to help them.
Is this still in issue in Tomcat 5.5?
This has been fixed in svn and will be included in 5.5.20 onwards