However, in tomcat 5, if the value is a non-String rt expression, a Rt expression given in the tag body (the second versions above) is toString'ed and the attribute just receives a String instead of an Object type. Is this a behavior defined in spec? I just cannot locate explicit info in the spec saying this but it seems to imply this behavior. Could anyone clarify this. Thanks
I think it is more implied than stated anywhere. Anything that is template text, gets output to a writer - it has to be converted to a string. Values in an attribute are not template text, so obviously do not get automatically converted.
Check out section JSP1.3.6 of the JSP2.0 specification. It has an example showing that whatever is nested between tags is template text. It also details the <jsp:attribute> tag, which I admit I have never come across before.