do you have caching disabled? I suspect the following? Tap inits your prop 1. whenever your page is built from the spec/template 2. whenever it's put back into the pool after use.
With caching disabled 1. and 2. will occur in each request-cycle. With production settings, 1 *and* 2 will only occur in the first cycle, subsequent cycles will only have 2. btw: I don't disable caching anymore since I discoved the invaluable reset-Service > -----Original Message----- > From: Mark [mailto:[EMAIL PROTECTED] > Sent: Wednesday, May 31, 2006 7:28 AM > To: Tapestry users > Subject: Re: List loaded twice from DB > > > Hi Ron, > > it sounds like this would work, but isn't this just a workaround for > something that really should not happen this way in the first place? > > Thanks, > > MARK > > Ron Piterman wrote: > > just an idea: try to implement the 'roomlist' property > yourself, as I > > described in my previous postings, instead of letting > tapestry do it. > > may be this will help. > > don't forget to implement a pageDetachListener which sets > the property > > to null. > > I always had good experience when doing it like this. > > Cheers, > > Ron > > > > > > Mark wrote: > >> Hi Ron, > >> > >> I don't understand what you mean by "instead of doing it on > >> finishLoad()". I did not do anything with finishLoad(), I > don't know > >> why it calls the getList. > >> > >> Here is my .page file: > >> > >> > >> <page-specification > >> > class="com.mark_arnold.sample.rbs1.web.tapestry.page.admin.Roo > mListPage"> > >> > >> <inject property="administrationService" > >> object="spring:rbsRoomAdminService" /> > >> <inject property="pageService" object="engine-service:page"/> > >> > >> <inject property="messageResource" > >> object="spring:applicationContext"/> > >> > >> <property > >> name="roomList">ognl:administrationService.getAllRooms()</property> > >> <property name="debug">true</property> > >> <property name="room"/> > >> <property name="editPageName" > >> initial-value="literal:admin/RoomAdminPage"/> > >> </page-specification> > >> > >> My Page class extends BasePage, but only overwrites pageAttached() > >> (nothing related to the list in here). > >> > >> MARK > >> > >> > >> Ron Piterman wrote: > >>> 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(Pag > eLoader.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.serv > ice(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]