> Marc Portier wrote:
>
>
> Hugo Burm wrote:
> > Hello Marc,
> >
>
> sorry for the late reply...
>
> > Ok. Let me explain. Maps are sometimes much more convenient than Lists
> > (let's skip a discussion on that one). So I have two classes:
> <SKIP/>
>
> Well, for what its worth the not to have discussion is probably
> not on LIST vs MAP but MAP vs SET :-)
>
> I'ld personally would have tackled this with a HashSet of
> contacts and adding the appropriate hashcode() and equals()
> methods to the HContact so its very own id would serve as the
> fast lookup in the Set...
>
> (but it doesn't really change much the real issue here)
>
> > What I want to do is: create a Map of contacts in HForm2Bean and access
> > these contacts with a key "id".
> > This key is also stored in one of the fields of HContact (id). The field
> > that is the key, should be one of the configuration parameters
> of the Woody
> > repeater.
>
> yep.
>
> > This solves your question "which key to use?".
>
> not really, it doesn't solve the question on the way back, unless
> you expect the id's to be edited by hand?
>
> (which would surely require another RepeaterBinding implementation)
>



I tried to ommit the persistence topic, but many of the issues above have to
do with the Hibernate framework I am using. E.g. the id is generated by
Hibernate. This works OK for the list implementation in Woody. The Woody
framework detects a contact that is inserted because its id is null. Then,
Hibernate generates the id when saving the contact to hard disk.

About lists, maps, and sets: Hibernate has four mappings: the three I just
mentioned, plus something called a "bag". So people like me will keep on
asking for repeaters for these three types. JDO 2.0 builds on Hibernate. So
I will not be the last one asking for this.


> > file "binding_example.js" in such a way that a bean and a
> number of contacts
> > are created; the editing is skipped; and we go directly to your pipeline
> > "form2bean-success-pipeline", the form2_jx.xml form is called.
> This contains
> > the loop:
> >       <jx:forEach var="item" items="${form2bean.contacts}">
> >         <tr>
> >           <td>${item.id}</td>
> >           <td>${item.firstName}</td>
> >           <td>${item.lastName}</td>
> >                                     <skip/>
> >         </tr>
> >       </jx:forEach>
> >
> > This loops shows the correct results when I use a map instead of a list!
>
> hm, my turn to be not convinced: above uses the ${..} expressions
> inside jx and not the #{..}
>
> ${..} in jx are evaluated by jexl
> #{..} are covered by jxpath
>
> so we're looking at a horse of an entirely different color here.
>



OK, may be I had too much sunshine the last couple of weeks. I did a post
myself about the difference between # and $ a few weeks ago which covered
exactly this problem:
http://marc.theaimsgroup.com/?l=xml-cocoon-dev&m=106050576128633&w=2
I checked the JXPath docs and your explanation appears to be correct. Sorry.


>
>
> Back to your issue: how to edit these beans with Woody/Binding?
>
> I would need some more time to get into it more deeply, so I
> wouldn't mind if somebody with more current slack hacks this up
> ans shares this
>
> Hugo, how urgent is this for you?
>
> AFAICS this needs a different RepeaterBinding of some sort that
> is not that much different to the existing one, just that
>
>


I hacked the Woody RepeaterBinding myself and solved my own urgent problem.
Listing a map of contacts is working. Updating is working. Adding and
deleting contacts is something I don't need at the moment (off course my
real world problem has nothing to do with this form2bean and contact
classes), but I will try to add this, and send the results to you.

Thanks.


Hugo Burm

Reply via email to