Re: problem upgrading to JSTL 1.2



On Dec 23, 7:35 pm, Lew <l...@xxxxxxxxxxxxx> wrote:
yishayj...@xxxxxxxxxxx wrote:
Hi All,

We in the process of upgrading our JBoss implementation from version
4.0.3 to 4.2.2. This also implies moving from JSTL 1.1 to JSTL 1.2 and
from Tomcat 5 to Tomcat 6.

Now some of our old JSPs don't work.

For example:

<%-- ${currGroup.current.value} is an ArrayList --%>
<c:set var="messageList" value="${currGroup.current.value.list}"/>

throws the following exception:

javax.el.PropertyNotFoundException: Property 'list' not readable on
type java.util.List

I've found out that changing
${currGroup.current.value.list}
to
#{currGroup.current.value.list} fixes this problem. But I wouldn't
want to make this change all across our JSPs. Besides I thought JSTL
1.2 was supposed to be backwards compatible to JSTL 1.1. That's what
it says here:

http://today.java.net/pub/a/today/2006/03/07/unified-jsp-jsf-expressi...

Does anyone have an explanation?

I might, after seeing the definition of the backing bean, particularly the
currGroup object's type, and the declaration of getCurrent(), its type, its
declaration of getValue(), its type in turn, and the declaration of that
type's getList().  The error message indicates that getValue() already returns
a java.util.List(), which of course would not itself have a getList() method.

Incomplete examples lead to incomplete answers.

--
Lew- Hide quoted text -

- Show quoted text -

Thanks for your quick answer. I'll try to add the missing background.
The expression is read from within a forEach loop in the following
manner:

<c:forEach items="${messageGroup}" varStatus="currGroup">
<c:set var="messageList" value="${currGroup.current.value.list}"/>
<%-- this is irrelevant as it never reaches this spot -->
</c:forEach>

messageGroup is a Map<org.apache.struts.action.GLOBAL_MESSAGE,
org.apache.struts.action.ActionMessages.ActionMessageItem>

So the map is iterated over, currGroup.current.value means
org.apache.struts.action.ActionMessages.ActionMessageItem is accessed,
and currGroup.current.value.list would mean
org.apache.struts.action.ActionMessages.ActionMessageItem.getList() is
called. This method does exist, as I've verified in my java code. It's
also part of the API, as explained in

http://struts.apache.org/1.x/struts-core/apidocs/org/apache/struts/action/ActionMessages.ActionMessageItem.html#getList()

------

Perhaps now you can understand my question. Why does this work:

<c:set var="messageList" value="#{currGroup.current.value.list}"/>

while this doesn't?

<c:set var="messageList" value="${currGroup.current.value.list}"/>

.



Relevant Pages

  • Re: problem upgrading to JSTL 1.2
    ... from Tomcat 5 to Tomcat 6. ... Now some of our old JSPs don't work. ... I might, after seeing the definition of the backing bean, particularly the currGroup object's type, and the declaration of getCurrent, its type, its declaration of getValue, its type in turn, and the declaration of that type's getList. ... Incomplete examples lead to incomplete answers. ...
    (comp.lang.java.programmer)
  • Cannot create PoolableConnectionFactory to mysql by JSP on tomcat
    ... i got the following error when using the following jsp on tomcat 4.06 ... Error Message ... Server connection failure during transaction. ...
    (comp.lang.java.programmer)
  • Re: Help choosing JSP Server
    ... If you use google groups to search on the exact error message you're ... I'd recommend Tomcat. ...
    (comp.lang.java.help)
  • no jkjni
    ... When starting tomcat I get the error message: "no jkjni in ... That's correct since I don't have it but I can't find a deb packages ...
    (Debian-User)
  • Re: http request problem
    ... and it is a jsp file. ... while i am trying to access to another file, from another server it run ... this is the error message i get: ...
    (php.general)