tomcat-taglibs-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Shawn Bayern <bay...@essentially.net>
Subject Re: c:set and scriptlets
Date Mon, 11 Mar 2002 16:18:46 GMT
Anuj was writing about the JSTL tag <c:set>, though.  JSTL de-emphasizes
scripting variables in favor of the expression language it introduces.

Scripting variables are a reasonable mechanism for some applications, but
they inherently depend on scriptlets, which means that they're useful only
if a page author knows something about Java.  Scripting variables can also
be confusing many situations.  For instance, consider the following code:

   <%-- Sets a scoped attribute "four" with the value of 4 --%>
   <c:set var="four" value="${2 + 2}"/>

   <%-- Declares a scripting variable "four" to match this scoped var --%>
   <jsp:useBean id="four" type="java.lang.Number"/>

   <%-- Replaces the scripting variablr "four" with the value 5 --%>
   <% four = new Integer(5); %>

   <%-- Prints out the value of the scoped variable "four" --%>
   <c:out value="${four}"/>

What do you expect the final <c:out> tag to output?  You might think "5"
because you replaced the scripting variable 'four' with an Integer object
for the number 5.  But the tag actually prints out "4", because changing a
scripting variable doesn't change the scoped variable that it was
originally tied to.

--
Shawn Bayern
Author, "JSP Standard Tag Library"  http://www.jstlbook.com
(coming this spring from Manning Publications)

On Mon, 11 Mar 2002, Mark R. Diggory wrote:

> See my last message about multipart stuff. You can capture this 
> functionality in TEI (TagExtraInfo) Support class to your tag. Then in 
> your tag you can set the value of the variable via a special method 
>  which you have to define.
> 
> <!-- Straight off the javadoc
> 
> public abstract class TagExtraInfo
> extends java.lang.Object
> 
> Optional class provided by the tag library author to describe additional 
> translation-time information not described in the TLD. The TagExtraInfo 
> class is mentioned in the Tag Library Descriptor file (TLD).
> 
> This class can be used:
> 
>     * to indicate that the tag defines scripting variables
>     * to perform translation-time validation of the tag attributes.
> 
> ...
> 
> -->
> -Mark Diggory
> 
> 
> Shawn Bayern wrote:
> 
> >On Mon, 11 Mar 2002, Agrawal, Anuj (Anuj)** CTR ** wrote:
> >
> >>In my code i have <c:set var="x" value="4"/>
> >>
> >>I'd like to be able to access the variable x from within a scriptlet,
> >>something like:
> >>
> >><%
> >>	x = x++;
> >>%>
> >>
> >>and vice versa.
> >>
> >>Is this even possible?  I don't see anything in the docs that refer to
> >>such interchangeability. 8(
> >>
> >
> >JSTL doesn't particularly encourage this usage, but it's perfectly
> >possible using older, scriptlet-oriented mechanisms like <jsp:useBean>.  
> >Just use a <jsp:useBean> tag after <c:set> to declare your scripting
> >variable.
> >
> >--
> >Shawn Bayern
> >Author, "JSP Standard Tag Library"  http://www.jstlbook.com
> >(coming this spring from Manning Publications)
> >
> >
> >--
> >To unsubscribe, e-mail:   <mailto:taglibs-user-unsubscribe@jakarta.apache.org>
> >For additional commands, e-mail: <mailto:taglibs-user-help@jakarta.apache.org>
> >
> 
> 
> 
> 
> --
> To unsubscribe, e-mail:   <mailto:taglibs-user-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail: <mailto:taglibs-user-help@jakarta.apache.org>
> 


--
To unsubscribe, e-mail:   <mailto:taglibs-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:taglibs-user-help@jakarta.apache.org>


Mime
View raw message