Ryan, Here is some more of my code
public void pageBeginRender(PageEvent pageEvent){ if (!pageEvent.getRequestCycle().isRewinding()){ // if doing a render and the channel list is empty then obtain a new channel list and persist. if ((getChannelSetup()==null)||(getChannelSetup().size()==0)){ try { refreshCelloPagesSettings(); } catch (Exception e) { e.printStackTrace(); } } System.out.println("rendering"); } else { System.out.println("rewinding"); } } public void refreshCelloPagesSettings(){ Cello6 cello6=null; try { cello6 = getCello6DAO().get(getCelloSerialNumber()); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (Exception e1) { // TODO Auto-generated catch block e1.printStackTrace(); } if (cello6==null) return; setChannelSetup(getCello6DAO().getChannelSetup(getCelloSerialNumber())); setBatteryAlarm(getCello6().isBatteryAlarm()); byte rate = (byte)cello6.getLoggingRate(); setLoggingRate(rate); } I only initialise setChannelSetup when getChannelSetup is null, i.e. when the page is first called and renders. I will trace the page with breakpoints and see what happens. On 14/10/06, Ryan Holmes <[EMAIL PROTECTED]> wrote:
Without seeing more of your code, my guess it that you are unconditionally calling setChannelSetup() in your pageBeginRender method. Something like this: public void pageBeginRender(PageEvent event) { setChannelSetup(new ArrayList<Cello6ChannelSetup>()); } Remember that pageBeginRender is called *every time* the page is rendered, not just the first time the page is displayed. So, if your button calls a listener method that does something along the lines of this: public void addNewSetup() { Cello6ChannelSetup setup = new Cello6ChannelSetup(...); getChannelSetup().add(setup); } Then the pageBeginRender method runs *after* your listener method, thus wiping out the change by re-initializing the list. I can probably guess your next question, but I'll wait to see if I'm on the right track first. FYI, a good way to get a handle on Tapestry behavior for things like this is to set a breakpoint in your listener method and in your pageBeginRender method so you can see the order in which they are called. -Ryan On Oct 14, 2006, at 11:52 AM, Jabbar wrote: > Hello, > > I've been struggling all day editing persistent page properties and > finding that the values of the properties is not what I expected after > the render phases > > The persistant page property is > > @Persist > public abstract List<Cello6ChannelSetup> getChannelSetup(); > public abstract void setChannelSetup(List<Cello6ChannelSetup> d); > > This gets sets in PageBeginRender when the page is first called. A > button on the page is pressed which changes the property of one of the > elements of the list. After the render the value of the channelSetup > property is not what I expect. > > Does anybody have any ideas? > > Thanks > > -- > Thanks > > A Jabbar Azam > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > Ryan Holmes, CISSP [EMAIL PROTECTED] ph. (213) 626-0026 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
-- Thanks A Jabbar Azam --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]