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]

Reply via email to