tomcat-taglibs-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kris Schneider <k...@dotech.com>
Subject Re: <c:set> and runtime expressions
Date Tue, 04 Apr 2006 12:51:01 GMT
Tarek Nabil wrote:
> Thanks a lot Kris for the explanation.
> 
> Actually, I'm starting to feel that moving to JSTL 1.0 was not such a
> wise move. There are a lot of things that I used to be able to do with
> the Struts tag libraries that I can not do with JSTL. One of them is the
> example I mentioned. Currently, the only work around for me is to do
> this
> 
> <%
> Config config = Config.getIntance();
> %>
> 
> And then use config in later EL expressions. This is exactly what I
> don't want to do, but unfortunately, it seems there's no other way
> around it.

If that Config instance is likely to be required for most requests, perhaps 
you can use a Filter to set the instance as a request attribute. Or, if 
you're using Struts, have an Action do something similar before forwarding.

> I'm starting to feel that JSTL has some severe limitations. Even with
> 1.1, I ran before into the problem of not being able to use constants.
> Someone on this list kindly suggested the non standard tag library, but
> the way it works (I guess) is that it uses reflection to expose those
> static fields as properties, which is a very artificial solution. I
> mean, why isn't this supported by default? I believe this is a question
> for the JSR experts to answer.

Not sure why you'd characterize reflection that way, it's certainly a 
naturally occurring part of JavaBeans (not to mention Struts and 
BeanUtils). In fact, reflection was my approach to this very issue a few 
years back when using Struts:

http://marc.theaimsgroup.com/?l=struts-user&m=103790677413408

Similar thread from this group:

http://marc.theaimsgroup.com/?l=taglibs-user&m=105889207116316

Lots of other ways to approach the problem, but it is recognized as an issue:

"access to constants"
http://jsp-spec-public.dev.java.net/issues/show_bug.cgi?id=145

> -----Original Message-----
> From: Kris Schneider [mailto:kris@dotech.com] 
> Sent: Monday, April 03, 2006 5:57 PM
> To: Tag Libraries Users List
> Subject: Re: <c:set> and runtime expressions
> 
> Tarek Nabil wrote:
> 
>>So that means if I use the RT-based version, then I won't be able to
> 
> use
> 
>>EL? That's quite strange, because 1.1 could handle both, so it has to
> 
> be
> 
>>doable.
> 
> 
> In fact, that's exactly what it means. It's only as of JSP 2.0 that EL 
> evaluation is done by the container. This means that both EL expressions
> 
> and JSP expressions can be used as RT attribute values. So, JSTL 1.1
> isn't 
> really handling anything, it's the JSP 2.0 container. Since JSP 1.2
> doesn't 
> do EL evaluation, it's up to a taglib (JSTL 1.0, for example) to do it. 
> That's why the versions of the JSTL 1.0 taglibs that support EL
> evaluation 
> have attributes with rtexprvalue = false.
> 
> 
>>-----Original Message-----
>>From: Kris Schneider [mailto:kris@dotech.com] 
>>Sent: Monday, April 03, 2006 6:26 AM
>>To: Tag Libraries Users List
>>Subject: Re: <c:set> and runtime expressions
>>
>>If you need to run JSTL 1.0 and want to use JSP expressions as
> 
> attribute
> 
>>values, you need to use the "RT-based" versions. For JSTL, there are 
>>basically two distinct versions of each taglib:
>>
>><%@ taglib prefix="c"    uri="http://java.sun.com/jstl/core" %>
>><%@ taglib prefix="c_rt" uri="http://java.sun.com/jstl/core_rt" %>
>>
>>If you look at the TLD files for JSTL 1.0, you'll see:
>>
>>c.tld:
>>------
>>   <tag>
>>     <name>set</name>
>>...
>>     <attribute>
>>         <name>value</name>
>>         <required>false</required>
>>         <rtexprvalue>false</rtexprvalue>
>>     </attribute>
>>...
>>   </tag>
>>
>>c-rt.tld:
>>---------
>>  <tag>
>>     <name>set</name>
>>...
>>     <attribute>
>>         <name>value</name>
>>         <required>false</required>
>>         <rtexprvalue>true</rtexprvalue>
>>     </attribute>
>>...
>>   </tag>
>>
>>JSTL 1.0 has to handle EL evaluation on its own (it's integrated into
>>JSP 
>>2.0 so JSTL 1.1 doesn't need to do the evaluation), so you're forced
> 
> to 
> 
>>make a choice between different taglibs that use EL expressions or JSP
> 
> 
>>expressions.
>>
>>Tarek Nabil wrote:
>>
>>
>>>Hi everyone,
>>>
>>>
>>>
>>>I was using JSTL 1.1 in my application, and then unfortunately, I had
>>
>>to
>>
>>
>>>downgrade to 1.0. Now, my IDE is complaining about this line in my JSP
>>>
>>>
>>>
>>>   <c:set var="config" value="<%= Config.getInstance() %>"/>
>>>
>>>
>>>
>>>It says "Attribute value does not accept runtime expressions.
>>>
>>>
>>>
>>>This used to work perfectly when I was using 1.1. I tried to look at
>>
>>the
>>
>>
>>>changes between 1.1 and 1.0 but I can not see anything related to this
>>>issue. Is this really a difference between 1.0 and 1.1 or am I doing
>>>something wrong?
>>>
>>>
>>>
>>>Thanks in advance for your help.

-- 
Kris Schneider <mailto:kris@dotech.com>
D.O.Tech       <http://www.dotech.com/>

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


Mime
View raw message