Win a copy of Design for the Mind this week in the Design forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Retrieve values from Object[][] using iterator

 
Chen-Chien HUNG
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In my Action code, I got the value type Object[][]. How can I get the correct value in my JSP with <logic:iterator>? following is my action code:



And the script for the method:


And my jsp code is:


And the result of my jsp is:
 
Merrill Higginson
Ranch Hand
Posts: 4864
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You are getting these values because you are printing an object instead of a String. If you supply your Linked and Micromodule objects with "toString" methods, they will be called and print the value you specify. Also, you have the option of printing a property of the object. Example:
 
Chen-Chien HUNG
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Does that mean I add the method "toString" in my class "Linked" & "Micromodule"? like:


If so, where should I call this method? In my jsp file?

Beside, I tried to print the property of the object with the code:


Then I got the error message:
 
Merrill Higginson
Ranch Hand
Posts: 4864
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Every object has a toString method that prints out the object ID. Those strange looking values the printed on your page were Object IDs. What I was suggesting is that you override the toString method of your objects to print something meaningful to you. For example, the toString method of an address object might be:

If you provide a toString method, it is called automatically by Struts when you specify the object with no property in the <bean:write> tag.

The reason it didn't work when you specified a property is that you specified it incorrectly. Change your tag to

and make sure the object has a getLocalnb method.
[ September 12, 2008: Message edited by: Merrill Higginson ]
 
Chen-Chien HUNG
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Following your suggestion, I override toString method in my two classes: Linked & Micromodule and modified my jsp code to see what happended. Now my jsp code is:


And the result is :


I don't know why the values in "row" is still the strong IDs and why only in the second result we can have the values that are readable. If I add the property (localnb) to show in the jsp, then I got the same error, that means there is not getter method, however, this method does exist in my class Micromodule. After all, I went through my scripts and have following questions:
1. Basically my 2 dimension array has the type Object[Linked][Micromodule], in the jsp file, does "row" mean the content of "Linked" and "col" for "Micromodule"?
2. In side the "Linked" class, there are the fields of type of user defined, like "Kchip", "Bundles". I tried to override toString method of these two classes, when I run the application, I got the error "java.lang.StackOverflowError". Without overriding toString inside these two classes, I got the result as above. Why? Does this cause the value like "[Ljava.lang.Object;@64eff0 " in the result

Thanks a lot for your help!
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic