I'm learning how to use Jasper reports, in this case as a result from
a Struts2 (2.1.8) web app. I'm sending a List (ArrayList) of objects
to a report and when the case is that simple, I have things working
just fine.

Next, I need to report a hierarchy of data like this example:
List<Parent> parents;

Parent:
String name;
List<Child> children;

Child:
String name;

So I want to send the list of Parent objects to report A. This report
includes a subreport, B, which should iterate over the list of Child
objects for each Parent. Like:
for (Parent p : parents) {
  for (Child c : p.children) {
    // report
  }
}

My problem is that my report, which compiles cleanly, cannot be
"filled" by the Struts action. I instead get a stack trace about not
being able to evaluate the expression $F{children}, and the end of the
stack trace says:

Caused by: java.lang.ClassCastException:
org.apache.struts2.views.jasperreports.ValueStackDataSource
incompatible with java.util.List

I use hibernate and lazy loading on the back end, so I added a loop to
pre-fetch and initialize all the "children" lists for each parent,
just to make sure it wasn't an issue with lazy loading and sessions
and such. The problem still occurs.

I'm also making sure each "children" ArrayList is either full of data
or initialized as an empty ArrayList, so there should not be any Null
references.

It appears from the stack trace error that Struts is not allowing
Jasper to access the nested property of the Parent object. I'm doing
the same kind of operation in a dozen places in .jsps, so I know my
object model is solid.

Does anyone have experience with this kind of Struts 2 reporting in
Jasper who could lend me a hand learning how to do this?

thanks,
 - Aaron

-- 
Aaron Brown : aa...@thebrownproject.com

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

Reply via email to