This week's book giveaway is in the Python forum.
We're giving away four copies of Hello World and have Warren & Carter Sande on-line!
See this thread for details.
Win a copy of Hello World this week in the Python forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
  • Campbell Ritchie
  • Paul Clapham
  • Bear Bibeault
  • Liutauras Vilda
  • Devaka Cooray
  • Knute Snortum
  • Junilu Lacar
  • Henry Wong
Saloon Keepers:
  • Ron McLeod
  • Stephan van Hulst
  • Tim Moores
  • Carey Brown
  • Tim Holloway
  • salvin francis
  • Frits Walraven
  • Piet Souris

struts 1.2.7: html:multibox and no checked checkboxes - how does "matches" work?

Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
There I am, trying to update a legacy project using Tomcat, Castor and Struts. Now the struts part is giving me headaches.

What I am trying to do is giving a "contact" the ability do subscribe and unsubscribe newsletters.

So I have got two arrays, one containing all newsletters, one those already subscribed by the contact. I already managed to list all newsletters, works fine, shows their description and also assigns their id as value to the checkbox.
But I cannot get the checkbox to be "checked" if one of the newsletters has already been selected.

Now, this is the important part of the form used for the action:

This is me adding the data to the DynaActionForm by transforming my Collection to an array (reason: Castor JDO loves Collections, but since the forms for struts are already written in xml and I only knew how to model arrays there, I convert them):

And this is me extending the .jsp to display a list of newsletters

Now I cannot get my Eclipse to debug on the Tomcat (dunno, don' care, works with the same setup for the guy next to me...), so I stick to system.out.println()-debugging. From that I know:
  • Two newsletters are equal if their id, description and e-mail match (I implemented that myself because I thought matching did not work - and I remembered to implement the hashcode, too, don't worry)
  • If I simply iterate over the list in java and match using "equals", I find one match (for my example case)
  • If I iterate over the list of all newsletters in .jsp using logic:iterate, all are shown correctly
  • If I iterate over the list of subscribed newsletters in .jsp using logic:iterate, the one subscribed newsletter is shown correctly

  • So I figure it has to be either the "matching" done by Struts or me misreading the 10 top examples google gave me (which use arrays of String, so it has to be the equals() method, not a simple == comparison).
    Note that I do not insist on using multibox (so I would use checkbox, but I haven't found out how to get something checked there, either) and the solution does not have to be pretty. I already implemented a diff/delta for two arrays, so I do not insist on the ability to find out which box was unselected.

    So, anyone got an idea?


    Edit: Added version to title

    Edit2: WTF? I just replaced my lovingly-crafted, beautiful Newsletter class with a String. And it worked! Why? Both are Objects, yet String is Comparable... hurrm?
    [ December 18, 2008: Message edited by: Tobias Prinz ]
    That feels good. Thanks. Here's a tiny ad:
    Java file APIs (DOC, XLS, PDF, and many more)
    • Post Reply Bookmark Topic Watch Topic
    • New Topic
    Boost this thread!