Hi everyone,

I'm pretty much a newbie on Tapestry and need some help.

I'm building a simple web application for administering some data in a
database. I use Hibernate for database connection. I'll need several pages
that will handle insert of new record to table or editing an existing
record. I wan't to use the same page for insert and edit.
My question is basically: How should I build my pages and how should I
handle state between postbacks?
Let me take an example - I have a model object called Event, a page
ListEvents and a page EditEvent.

This is the essentials of my EditEvent.java:

   public abstract Event getEvent();
   public abstract void setEvent(Event event);

   public void pageBeginRender(PageEvent event)
   {
       if(getEvent() == null)
           // new Event
           setEvent(new Event());
   }

Could/should the thing in pageBeginRender be done by injection instead?
And this is the link between the Event list and the EditEvent page in
ListEvents.java:


   @InjectPage("EditEvent")
   public abstract EditEvent getEditEvent();

   public IPage editEvent(int eventId) {
       EditEvent editEvent = getEditEvent();
       editEvent.setEvent(EventServices.getEvent(eventId));
       return editEvent;
   }

where EventServices.getEvent fetches Event from DB.

How should I handle state between postbacks? I have put my eventId in a
Hidden in the EditEvent.html like this:
<input jwcid="@Hidden" value="ognl:event.eventId" />

but this means I will have to redo EventServices.getEvent(eventId) after
postback. This could maybe be OK but where do I put the code? Or should I
store the Event instance in my visit state?

This must be one of the most common scenarios so I guess you all know how it
should be done - please tell me :)

Malin

Reply via email to