This week's book giveaway is in the Big Data forum.
We're giving away four copies of Elasticsearch in Action and have Radu Gheorghe & Matthew Lee Hinman on-line!
See this thread for details.
The moose likes Struts and the fly likes Runtime type substitution on logic:iterate Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Elasticsearch in Action this week in the Big Data forum!
JavaRanch » Java Forums » Frameworks » Struts
Bookmark "Runtime type substitution on logic:iterate" Watch "Runtime type substitution on logic:iterate" New topic

Runtime type substitution on logic:iterate

Scott Bailey

Joined: Jan 22, 2004
Posts: 2
I am using struts 1.1 and I want to have a multipurpose jsp. I am getting the ClassCastException when I try to do something similar to the following:
<% String dynamicType = "com.myorg.myClass"; %>
<logic:iterate name="TableActionForm" property="genericVos" id="tablelist" indexId="indexNum" type="<%=dynamicType%>">
The string evaluates properly elsewhere on the page and copying the value into the iterate tag (so it is not dynamically generated) works fine - it is the correct class and the iterate works properly.
The struts-logic.tld says that the type property has a rtexprvalue=true. The plan was to pass in the type of the class as a Tiles attribute but I can't even get the above to work. Has anyone done something like this, is there another way to do this?
Bear Bibeault
Author and ninkuma

Joined: Jan 10, 2002
Posts: 62139

Welcome to the Ranch Scott. We have a forum devoted to Struts, so I'm moving your topic along to there.

[Asking smart questions] [Bear's FrontMan] [About Bear] [Books by Bear]
Ray Stojonic
Ranch Hand

Joined: Aug 08, 2003
Posts: 326
have your classes implement an Interface and use type="MyInterface"
Scott Bailey

Joined: Jan 22, 2004
Posts: 2
Originally posted by Ray Stojonic:
have your classes implement an Interface and use type="MyInterface"

I thought about that (and very good suggestion, thanks) but I need to call an extra getter method on some of the classes that not all the classes have (I would be using logic:match tags to check a value passed from a tiles definition to decide whether include the call to the getter.)
I suppose I could add that extra method to the base class but to complicate things all these classes are value objects generated by a utility directly from database tables and views and I have a delivery Monday so I was hoping to come up with a JSP solution (other than cut and paste!). Thanks again.
It is sorta covered in the JavaRanch Style Guide.
subject: Runtime type substitution on logic:iterate