You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Michael Jouravlev <jm...@gmail.com> on 2006/03/09 09:50:41 UTC

Mixing JSTL 1.0 and JSTL 1.1 expressions on one page

I have been using Tomcat 4 (Web Application 2.3) with JSTL 1.0 for
quite a while. Now I am switching to Tomcat 5. I set webapp version to
2.4 in web.xml and now I can use JSTL 1.1 expressions everywhere in my
HTML.

This is great, but Jasper does not like the old JSTL 1.0 syntax like
<c:out value='${username}'. More specifically, it throws the following
exception

org.apache.jasper.JasperException:
/login/loginComponent-viewLogin.jsp(21,25) According to TLD or
attribute directive in tag file, attribute value does not accept any
expressions

 when it encounters this tag:

<input type="text" name="username" value="<c:out value='${username}'/>" />

This one works fine:

<input type="text" name="username" value="${username}" />

So the question is: can I mix and match JSTL 1.0 and 1.1 expessions?
Or I must choose only one that corresponds to container? Does it
depend on container, I mean, maybe this mixing works on Resin or
Jetty? Or am I doing something wrong?

I don't want to have two versions of my JSPs for JSP 1.2 and for JSP
2.0 containers.
Michael.

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


Re: Mixing JSTL 1.0 and JSTL 1.1 expressions on one page

Posted by Michael Jouravlev <jm...@gmail.com>.
Arrgh! That must be it. I forgot to remove JSTL 1.0 libraries from
WEB-INF/lib. Seems that I need two different directories configured
for Tomcat4 and Tomcat5. Or I can move JSTL 1.0 libraries to common
libs in Tomcat4.

Thanks!

On 3/9/06, Mark Lowe <me...@gmail.com> wrote:
> Thats a really wierd problem you're having..
>
> Try this namspace, i recall they changed at some point..
>
> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
>
> If you see that the el isn't being evaluated you can configure this in
> you web.xml or
> <%@ page isELIgnored="false" %>
>
> What it looks like is happening is that your old jstl is being
> resolved, and it doesn't deal with tomcat already evaluating the
> expressions (rather than needing jstl to do it)..
>
> HTH Mark
>
> On 3/9/06, Michael Jouravlev <jm...@gmail.com> wrote:
> > I made it work by using RT library:
> >
> > <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
> >
> > Why Tomcat treats JSTL expression like this:
> >
> > <c:forEach var='message' items='${sessionScope.MESSAGES}'>
> >
> > as runtime expression? I thought that in JSTL 1.0 this was other way
> > around? Do I need to use RT library?
> >
> > On 3/9/06, Michael Jouravlev <jm...@gmail.com> wrote:
> > > No, not resolved... New TLD does not have a lot of tags, and for old
> > > URI I get an exception.
> > >
> > > On 3/9/06, Michael Jouravlev <jm...@gmail.com> wrote:
> > > > I have been using Tomcat 4 (Web Application 2.3) with JSTL 1.0 for
> > > > quite a while. Now I am switching to Tomcat 5. I set webapp version to
> > > > 2.4 in web.xml and now I can use JSTL 1.1 expressions everywhere in my
> > > > HTML.
> > > >
> > > > This is great, but Jasper does not like the old JSTL 1.0 syntax like
> > > > <c:out value='${username}'. More specifically, it throws the following
> > > > exception
> > > >
> > > > org.apache.jasper.JasperException:
> > > > /login/loginComponent-viewLogin.jsp(21,25) According to TLD or
> > > > attribute directive in tag file, attribute value does not accept any
> > > > expressions
> > > >
> > > >  when it encounters this tag:
> > > >
> > > > <input type="text" name="username" value="<c:out value='${username}'/>" />
> > > >
> > > > This one works fine:
> > > >
> > > > <input type="text" name="username" value="${username}" />
> > > >
> > > > So the question is: can I mix and match JSTL 1.0 and 1.1 expessions?
> > > > Or I must choose only one that corresponds to container? Does it
> > > > depend on container, I mean, maybe this mixing works on Resin or
> > > > Jetty? Or am I doing something wrong?
> > > >
> > > > I don't want to have two versions of my JSPs for JSP 1.2 and for JSP
> > > > 2.0 containers.
> > > > Michael.

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


Re: Mixing JSTL 1.0 and JSTL 1.1 expressions on one page

Posted by Mark Lowe <me...@gmail.com>.
Thats a really wierd problem you're having..

Try this namspace, i recall they changed at some point..

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

If you see that the el isn't being evaluated you can configure this in
you web.xml or
<%@ page isELIgnored="false" %>

What it looks like is happening is that your old jstl is being
resolved, and it doesn't deal with tomcat already evaluating the
expressions (rather than needing jstl to do it)..

HTH Mark

On 3/9/06, Michael Jouravlev <jm...@gmail.com> wrote:
> I made it work by using RT library:
>
> <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
>
> Why Tomcat treats JSTL expression like this:
>
> <c:forEach var='message' items='${sessionScope.MESSAGES}'>
>
> as runtime expression? I thought that in JSTL 1.0 this was other way
> around? Do I need to use RT library?
>
> On 3/9/06, Michael Jouravlev <jm...@gmail.com> wrote:
> > No, not resolved... New TLD does not have a lot of tags, and for old
> > URI I get an exception.
> >
> > On 3/9/06, Michael Jouravlev <jm...@gmail.com> wrote:
> > > I have been using Tomcat 4 (Web Application 2.3) with JSTL 1.0 for
> > > quite a while. Now I am switching to Tomcat 5. I set webapp version to
> > > 2.4 in web.xml and now I can use JSTL 1.1 expressions everywhere in my
> > > HTML.
> > >
> > > This is great, but Jasper does not like the old JSTL 1.0 syntax like
> > > <c:out value='${username}'. More specifically, it throws the following
> > > exception
> > >
> > > org.apache.jasper.JasperException:
> > > /login/loginComponent-viewLogin.jsp(21,25) According to TLD or
> > > attribute directive in tag file, attribute value does not accept any
> > > expressions
> > >
> > >  when it encounters this tag:
> > >
> > > <input type="text" name="username" value="<c:out value='${username}'/>" />
> > >
> > > This one works fine:
> > >
> > > <input type="text" name="username" value="${username}" />
> > >
> > > So the question is: can I mix and match JSTL 1.0 and 1.1 expessions?
> > > Or I must choose only one that corresponds to container? Does it
> > > depend on container, I mean, maybe this mixing works on Resin or
> > > Jetty? Or am I doing something wrong?
> > >
> > > I don't want to have two versions of my JSPs for JSP 1.2 and for JSP
> > > 2.0 containers.
> > > Michael.
> > >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>

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


Re: Mixing JSTL 1.0 and JSTL 1.1 expressions on one page

Posted by Michael Jouravlev <jm...@gmail.com>.
I made it work by using RT library:

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>

Why Tomcat treats JSTL expression like this:

<c:forEach var='message' items='${sessionScope.MESSAGES}'>

as runtime expression? I thought that in JSTL 1.0 this was other way
around? Do I need to use RT library?

On 3/9/06, Michael Jouravlev <jm...@gmail.com> wrote:
> No, not resolved... New TLD does not have a lot of tags, and for old
> URI I get an exception.
>
> On 3/9/06, Michael Jouravlev <jm...@gmail.com> wrote:
> > I have been using Tomcat 4 (Web Application 2.3) with JSTL 1.0 for
> > quite a while. Now I am switching to Tomcat 5. I set webapp version to
> > 2.4 in web.xml and now I can use JSTL 1.1 expressions everywhere in my
> > HTML.
> >
> > This is great, but Jasper does not like the old JSTL 1.0 syntax like
> > <c:out value='${username}'. More specifically, it throws the following
> > exception
> >
> > org.apache.jasper.JasperException:
> > /login/loginComponent-viewLogin.jsp(21,25) According to TLD or
> > attribute directive in tag file, attribute value does not accept any
> > expressions
> >
> >  when it encounters this tag:
> >
> > <input type="text" name="username" value="<c:out value='${username}'/>" />
> >
> > This one works fine:
> >
> > <input type="text" name="username" value="${username}" />
> >
> > So the question is: can I mix and match JSTL 1.0 and 1.1 expessions?
> > Or I must choose only one that corresponds to container? Does it
> > depend on container, I mean, maybe this mixing works on Resin or
> > Jetty? Or am I doing something wrong?
> >
> > I don't want to have two versions of my JSPs for JSP 1.2 and for JSP
> > 2.0 containers.
> > Michael.
> >
>

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


Re: Mixing JSTL 1.0 and JSTL 1.1 expressions on one page

Posted by Michael Jouravlev <jm...@gmail.com>.
No, not resolved... New TLD does not have a lot of tags, and for old
URI I get an exception.

On 3/9/06, Michael Jouravlev <jm...@gmail.com> wrote:
> I have been using Tomcat 4 (Web Application 2.3) with JSTL 1.0 for
> quite a while. Now I am switching to Tomcat 5. I set webapp version to
> 2.4 in web.xml and now I can use JSTL 1.1 expressions everywhere in my
> HTML.
>
> This is great, but Jasper does not like the old JSTL 1.0 syntax like
> <c:out value='${username}'. More specifically, it throws the following
> exception
>
> org.apache.jasper.JasperException:
> /login/loginComponent-viewLogin.jsp(21,25) According to TLD or
> attribute directive in tag file, attribute value does not accept any
> expressions
>
>  when it encounters this tag:
>
> <input type="text" name="username" value="<c:out value='${username}'/>" />
>
> This one works fine:
>
> <input type="text" name="username" value="${username}" />
>
> So the question is: can I mix and match JSTL 1.0 and 1.1 expessions?
> Or I must choose only one that corresponds to container? Does it
> depend on container, I mean, maybe this mixing works on Resin or
> Jetty? Or am I doing something wrong?
>
> I don't want to have two versions of my JSPs for JSP 1.2 and for JSP
> 2.0 containers.
> Michael.
>

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