2011/6/28 Mark Thomas <ma...@apache.org>:
> On 28/06/2011 01:08, kkoli...@apache.org wrote:
>> Modified: tomcat/tc6.0.x/trunk/STATUS.txt
>> URL: 
>> http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=1140383&r1=1140382&r2=1140383&view=diff
>>
>>    http://svn.apache.org/viewvc?rev=1138950&view=rev
>>    http://svn.apache.org/viewvc?rev=1138953&view=rev
>>    +1: markt, schultz
>> -  -1:
>> +  -1: kkolinko: 1) It would be OK if it were mangling only reserved words
>> +    (where the tag wouldn't compile previously, so there were no 
>> regressions),
>> +    but JspUtils.makeJavaIdentifier() mangles '_' character, which will 
>> break
>> +    code that was previously working. E.g. <%=hello_world%>
>> +    2) Maybe it would be better to prefix the names with [_]jsp_ and use 
>> some
>> +    numbered suffix, to never collide with names that people may use in 
>> their
>> +    code.
>
> I don't see anything in the JSP specification that says tag file
> attributes must be exposed as Java variables with the same name. Given
> that a tag file attribute can have any name valid in XML, that
> requirement would be impossible to meet since may of those names would
> be invalid as Java identifiers.
>
> There is a requirement to expose attributes (with the same name) as page
> scoped variables. If I switch the test case to use ${hello_world} rather
> than <%=hello_world%> it works. However, that causes it's own set of
> problems when a Java keyword is used as an attribute name due to the
> restrictions of the EL specification.
>
> AFAICT, the only solution that is guaranteed (by the specification) to
> work for any attribute name in a tag file is:
> ${pageScope['attributename']}
> Unless I have missed something in the specification (always a
> possibility) that anything else works is a fortunate side-effect of the
> implementation.
>

Interesting. Though I used this feature a lot, since TC 5.5.

Eclipse IDE used to hilite these usages in red several years ago, but
nowadays it has support for such usage.

> On this basis, I think the new behaviour is compliant with the
> specification.

There is one more problem: you cannot introduce new variables that
will be seen by user's code, unless those are prefixed with reserved
prefix of "jsp_" ( "_jsp_") per JSP.9.1.2. That is because someone can
declare a local variable with the same name.

>
> That said, I take the point regarding regressions. I'm sure lots of
> folks will have used <%=attributeName%> or ${attributeName} as a
> shortcut although I don't currently see anything to support that usage
> in the JSP specification.
>

Best regards,
Konstantin Kolinko

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

Reply via email to