You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by GF <ga...@gmail.com> on 2008/02/05 11:54:07 UTC

Editing an entity in Struts2

I want to edit an entity, i.e. a Message
i would set the .jsp field this way

<s:textfield name="message.title"  />

on the MessageAction i would have a "edit" method that takes the
messageID and then call the business service to load the Message
object, so in the .jsp the file the textfield are loaded with the
current value.
when I submit the form, Struts2 will try to call
getMessage.setTitle("...") and so on, and it try to instatiate a new
Message object.
My idea is to create the object (loading it from hibernate calls on
the business service) in the prepare method, in this way when struts
will call getMessage.setTitle, it will set the new values on the
object loaded from the DB.
My worry is that this idea rely on the fact that the prepare
interceptor is called before the parameters interceptor.
What you think?
any better idea?

thank you.

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


Re: Editing an entity in Struts2

Posted by Jeromy Evans <je...@blueskyminds.com.au>.
Loading an Entity in the prepare method is a common use-case.
If you're allowing an Entity to be updated directly from the JSP you'll 
probably need the prepare-params-prepare
  (set params including entity's ID, params loads the existing entity, 
prepare sets the params on the entity instance)

I prefer not to do that because you're dirtying an Entity and 
consequently need to rollback the entire transaction in the case of a 
validation error or exception.
ie. you dirty the Entity before S2 validation so it will be committed 
when the EntityManager/Session commits.

 It is however a productive way to work if you can control that as you 
don't need to double-handle anything (ie. write to a bean, validate, 
update entities(s) behind a service layer).  I prefer this more-effort 
approach except in the simplest of cases.

GF wrote:
> I want to edit an entity, i.e. a Message
> i would set the .jsp field this way
>
> <s:textfield name="message.title"  />
>
> on the MessageAction i would have a "edit" method that takes the
> messageID and then call the business service to load the Message
> object, so in the .jsp the file the textfield are loaded with the
> current value.
> when I submit the form, Struts2 will try to call
> getMessage.setTitle("...") and so on, and it try to instatiate a new
> Message object.
> My idea is to create the object (loading it from hibernate calls on
> the business service) in the prepare method, in this way when struts
> will call getMessage.setTitle, it will set the new values on the
> object loaded from the DB.
> My worry is that this idea rely on the fact that the prepare
> interceptor is called before the parameters interceptor.
> What you think?
> any better idea?
>
> thank you.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>
>
>
>   


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