You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by René Günther <re...@innflow.com> on 2007/05/10 08:06:46 UTC

EL and nested objects

Hello,

assume I got a document bean and a costcenter bean (mapped to tables). The
document is assigned to a costcenter. The costcenter got two properties: id
(Long) and code (String). The user may edit the assignment by providing
another costcenter code for the document. In JSF this could look like that

<h:inputText value="#{documentForm.document.costcenter.code}" />

I run into 2 problems with this:
I am using Hibernate (dont know whether this applies to other persistence
frameworks also), if I retrieve a document from the DB which is not assigned
to a costcenter this will throw a "could not update model" error, since
document.getCostcenter() == null. This I found also mentioned in
http://jroller.com/page/mrdon?entry=jsf_rough_spots . I could assign new
Costcenter() to document but if user does not want to assign a costcenter I
would have to assign null before updating the document again with Hibernate
(Hibernate does not handle empty costcenter and null equally).

Other thing is, assume user works on two documents at once (eg within a
dataTable). Both documents are assigned to the same costcenter when
retrieving them from DB with Hibernate. If user changes the code of the
costcenter of one document this would apply to the other document also,
since document1.getCostcenter() == document2.getCostcenter().

How do you solve problems like this?


Right now I am considering the following solution:
1. Retrieving mapped objects from DB
2. Converting them into web layer objects like this:
webDocument.setCostcenterCode(document.getCostcenter().getCode());
3. User does stuff and finally pushes save button
4. Converting back by retrieving mapped objects:
document.setCostcenter(_costcenterManager.getCostcenter(webDocument.getCostc
enterCode()));

Regards
René