use lazy initialization for the list instead of doing it on finishLoad() :

public List getXXXList() {
  if (this.xxxList == null )
        this.xxxList = readXXXList();
  return this.xxxList;
}

+

pageDetachListener -> this.xxxList = null.

Cheers,
Ron


Mark wrote:
Hi,

I have a simple CRUD scenario with a "ListPage" and a "ModifyPage".
The ListPage gets all records from the DB by calling the method "getAllRooms()" of a "RoomAdminService" and lists them in a table. For some reason the query "select * from rooms" is executed twice every time the page is accessed.

getAllRooms() is only referenced once in the .page file to plug a page property, the .html file then references that property

I compared the StackTraces of the two calls, they have identical tops and bottoms, but differ somwhere in the middle:

       at $RoomListPage_3.finishLoad($RoomListPage_3.java)
at org.apache.tapestry.pageload.PageLoader.constructComponent(PageLoader.java:439) at org.apache.tapestry.pageload.PageLoader.loadPage(PageLoader.java:613)
       at $IPageLoader_10b79e6e7bf.loadPage($IPageLoader_10b79e6e7bf.java)
       at $IPageLoader_10b79e6e7c0.loadPage($IPageLoader_10b79e6e7c0.java)
at org.apache.tapestry.pageload.PageSource.getPage(PageSource.java:120)
       at $IPageSource_10b79e6e724.getPage($IPageSource_10b79e6e724.java)
at org.apache.tapestry.engine.RequestCycle.loadPage(RequestCycle.java:268) at org.apache.tapestry.engine.RequestCycle.getPage(RequestCycle.java:251) at org.apache.tapestry.engine.RequestCycle.activate(RequestCycle.java:609) at org.apache.tapestry.engine.PageService.service(PageService.java:66) at $IEngineService_10b79e6e7af.service($IEngineService_10b79e6e7af.java) at org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:66)


and

       at $RoomListPage_3.pageDetached($RoomListPage_3.java)
at org.apache.tapestry.AbstractPage.firePageDetached(AbstractPage.java:452)
       at org.apache.tapestry.AbstractPage.detach(AbstractPage.java:140)
at org.apache.tapestry.pageload.PageSource.releasePage(PageSource.java:147) at $IPageSource_10b79e6e724.releasePage($IPageSource_10b79e6e724.java) at org.apache.tapestry.engine.RequestCycle.cleanup(RequestCycle.java:192)


So it seems like the first call comes out of the finishLoad(), while the second call is caused by pageDetached() of my ListPage.


Does anybody know why it would access the getAllRooms() twice?

Thanks,

MARK

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to