> I do not know off hand what the relevant JSP spec says about runtime
 > expressions in tag attributes (maybe Hans can chime in, if he's on
 > this list), [...]

He is :-) All you say is correct. The only thing I can add is that the
JSP spec says that mixing scripting expressions and static values in
an rtexprvalue attribute is not supported. Hence, you must do the concat
in the scripting expression, just as you describe.

An alternative is to use JSTL EL expressions instead of scripting
expressions. In JSP 1.2, the EL expression must be eveluated by the
tag handler using a specific JSTL implementatation (such as the JSTL
RI), but in JSP 2.0, the container will evaluate the EL expression
before it calls the attribute setter on the tag handler:

   <my:MyTag name="${userName}_guest}"/>

With the EL, expressions (one or many) and static text can be mixed in
the attribute value.

Hans

Gideon, Thomas wrote:
 > I do not know off hand what the relevant JSP spec says about runtime
 > expressions in tag attributes (maybe Hans can chime in, if he's on
 > this list), but what you described matches my experience under the
 > web container provided by Weblogic 6.1.  It should be trivial,
 > especially in the example you provided, to do the string concat in
 > your scriptlet rather than trying to pass a value to a custom tag
 > that is half  regular text and half runtime expression.  One trick
 > we've used is
 >
 > <my:MyTag name="<%=userName + "_guest" %>"/>
 >
 > which gets around this seemingly odd limitation of tag attributes.
 >
 > Don't confuse HTML tags with JSP tags.  JSP tags are run through a
 > translation phase, where rules like where runtime attributes can be
 > used, what attributes are required, etc. are enforced.  The output of
 > translation is Java source code that is compiled.  All HTML tages
 > ultimately just end up as literals in println() calls in that source
 > code, or the equivalent.  That is, HTML tags don't have to obey any
 > special rules in the JSP translation phase, unlike JSP tags, because
 > they are part of what the JSP spec refers to as template text--that
 > HTML could just as easily be XML or WML or a csv file or any other
 > kind of text, the JSP container doesn't care.
 >
 > Thomas Gideon Sr. Software Developer B2eMarkets
 >
 > 301.230.2236  Tel. 301.230.2248  Fax. [EMAIL PROTECTED]
 > www.B2eMarkets.com
 >
 >
 >
 >
 >> -----Original Message----- From: shanmugampl
 >> [mailto:[EMAIL PROTECTED]] Sent: Friday, September
 >> 27, 2002 8:24 AM To: [EMAIL PROTECTED] Subject: Issue
 >> in giving runtime expression for custom tag attributes
 >>
 >>
 >> Hi All,
 >>
 >> I am developing some custom tags for my application. For one of my
 >> tag attributes i have the rtexprvalue set to true. The following
 >> scenario does not work
 >>
 >> Usage: <% String userName = "Shan" %> <my:MyTag
 >> name="<%=userName%>_guest"/>
 >>
 >> When i see the generated code, the value for userName is not
 >> replaced, and the whole expression is considered as a String and
 >> passed to the method. i.e the setName method is called as
 >> setName("<%=userName%>_guest");
 >>
 >> but the result i expected was setName(userName+"_guest");
 >>
 >> The same thing works fine if i give it as
 >>
 >> <my:MyTag name="<%=userName%>"/>
 >>
 >> and the generated result was setName(userName);
 >>
 >> Is this a bug  or the expected functionality because for other html
 >> tags such as input i can specify it as
 >>
 >> <input value="text<%=userName%>"/>
 >>
 >> Thanks Shanmugam.PL
 >>
 >>
 >> -- To unsubscribe, e-mail:
 >> <mailto:[EMAIL PROTECTED]> For additional
 >> commands, e-mail: <mailto:[EMAIL PROTECTED]>
 >>
 >
 > -- To unsubscribe, e-mail:
 > <mailto:[EMAIL PROTECTED]> For additional
 > commands, e-mail: <mailto:[EMAIL PROTECTED]>
 >

-- 
Hans Bergsten           [EMAIL PROTECTED]
Gefion Software         http://www.gefionsoftware.com
JavaServer Pages        http://TheJSPBook.com


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to