Hi,

I could identify the cause of the problem, but still have no
solution.

I set some breakpoints and made some output messages to trace
the system. The following thinks happened:

(1)
I submit a search in Tab1. The search word will be passed as 
Page Parameter to Page2 in Tab1. While Tab1 is showing the loading
animation with it AjaxSelfUpdatingTimerBehavior, I submit a second
search in Tab2. Tab2 switches to its Page2 and the loading animation
stops in both Tabs.

Reason:
--> The constructors of Page2 is called twice on the two Tabs.

As diagram:
01.) Tab1: Page1 submit search
02.) Tab1: Page2 (Page id = 14) calls its constructor and adds a PanelA
03.) Tab1: shows loading animation with its AjaxSelfUpdatingTimerBehavior at 
PanelA
04.) Tab2: Page1 submit search
05.) Tab2: Page2 (Page id = 16) calls its constructor and adds a PanelA
06.) Tab2: shows loading animation with its AjaxSelfUpdatingTimerBehavior at 
PanelA
07.) Tab1: Page2 (Page id = 17) calls its constructor
08.) Tab1: does not update anymore
09.) Tab2: Page2 (Page id = 18) calls its constructor
10.) Tab2: does not update anymore

I do nothing from the beginning of step 7 and do not know why the constructor
is called again.

(2)
The same odd behavior happens, when I do the following. I submit a search
in Tab1 from its Page1. While the loading animation is shown, I reload the
Page1 in Tab2. The constructor of Page2 in Tab1 is called again and the 
Page2 in Tab1 stops its update progress.

As diagram:
01.) Tab1: Page1 submit search
02.) Tab1: Page2 (Page id = 22) calls its constructor and adds a PanelA
03.) Tab1: shows loading animation with its AjaxSelfUpdatingTimerBehavior at 
PanelA
04.) Tab2: Reload any Page
05.) Tab1: Page2 (Page id = 23) calls its constructor
06.) Tab1: does not update anymore


I really can't explain to myself, why the constructor is called again. But I 
think
that this second call in the individual Tabs is crashing my application.
Any ideas about this odd behavior?

Thank in advance,
Andre


On Wed, 29 Feb 2012 10:10:37 -0800
Dan Retzlaff <dretzl...@gmail.com> wrote:

> Your description is clear, thank you. I'm not certain that the background
> thread's reference to the Session is valid outside of the servlet request.
> I would verify your assumption by logging the session's object ID when the
> value is read/written.
> 
> I have one other thought for you. I believe Wicket keeps the most recent
> page in a deserialized state to save itself the work of deserialization in
> the common case of it being required by the next request. (I think the
> logic is in PageStoreManager, but it's not clear to me. Hopefully a dev can
> confirm/correct me.) At any rate, this may cause the difference between
> your two scenarios. In your successful, single-tab scenario, you may be
> benefiting from a lack of serialization/deserialization round-trip. We have
> noticed this difference when our components have transient variables that
> aren't set to null in detach(): in the most recent page the variable
> remains not-null; if the session has intermediate requests for other pages,
> the variable is null when next accessed.
> 
> Good luck,
> Dan
> 
> 2012/2/29 "André Schütz" <andre-p...@gmx.de>
> 
> > Hi,
> >
> > Page1 gets the click of the submit button and collects the search word.
> > This will be changed into a hash value and set as PageParameter
> > (q=Hashvalue) to the ResponsePage which is Page2.
> > Additionally, I store the hash value into a session HashMap which holds
> > the hash value as key and an own class with the original search word. This
> > class will be filled with the results from the search of the background
> > thread.
> >
> > On Page2, I have the PageParameter as hash value and can search for the
> > correct entry of the HashMap in the session to react, when the results are
> > found.
> >
> > I hope, I could describe it.
> >
> > Andre
> >
> > -------- Original-Nachricht --------
> > > Datum: Tue, 28 Feb 2012 14:27:35 -0800
> > > Von: Dan Retzlaff <dretzl...@gmail.com>
> > > An: users@wicket.apache.org
> > > Betreff: Re: Multi Tab and Session
> >
> > > Hi Andre. I'm trying to understand your setup. A quickstart may be
> > > required.
> > >
> > > What does your Page1's onSubmit() look like? Specifically I'd like to
> > know
> > > how Page2 knows to watch for "word2".
> > >
> > > 2012/2/28 Andre Schütz <andre-p...@gmx.de>
> > >
> > > > Hello,
> > > >
> > > > I have a problem with my application that I am not able to solve since
> > > >  the last three days.
> > > >
> > > > I realized that Wicket 1.5 provides multi tab / multi window support
> > > > for more than one opened tab in a browser.
> > > > I have a problem with multiple tabs in my program, that I want to
> > > > describe now.
> > > >
> > > > The program consists of two pages. Page1 contains a search field that
> > > > will be used to type in a search word.
> > > > Page2 makes the search on a database, returns the results and
> > > > displays it as a list. The search will be done from a background
> > > > thread that stores the result in a hashmap in the session with the
> > > > search word as the key. Furthermore, Page2 shows a little loading
> > > > animation that will be updated (AjaxSelfUpdatingTimerBehavior), when
> > the
> > > > result is stored in the session.
> > > >
> > > > Now the problem.
> > > >
> > > > (1) I open the application in two tabs of the same browser.
> > > > (2) The URL looks as follows:
> > > > Tab1 - localhost:8080/appli/?0
> > > > Tab2 - localhost:8080/appli/?1
> > > > (3) Tab1 gets word1 in the search field and Tab2 gets word2
> > > > into the search field.
> > > > (4) I press the submit button of Tab1, switch to Tab2 and press the
> > > > submit button, too.
> > > > (5) The two Threads start to search for the results.
> > > > (6) During the AjaxSelfUpdatingTimeBehavior, the result panel of Page2
> > > > checks
> > > > in its overwritten onBeforeRender method for the results. When the
> > > result
> > > > for the search word is found in the session, the updateBehavior of
> > Page2
> > > > is stopped and the results will be displayed.
> > > > -> Here starts my problem:
> > > >
> > > > None of the two pages will be updated and show the results. If I start
> > > > the search in one of the Tabs, the process will be finished and the
> > > > results displayed onto the screen.
> > > >
> > > > For me, it seems that both tabs share the same session data and also
> > > > the same updateBehavior on the Page2.
> > > >
> > > > Can anybody help me with that problem? Would be great.
> > > >
> > > > --
> > > > Andre Schütz <schuetz.an...@gmx.net>
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> > > > For additional commands, e-mail: users-h...@wicket.apache.org
> > > >
> > > >
> >
> > --
> > Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir
> > belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> > For additional commands, e-mail: users-h...@wicket.apache.org
> >
> >


-- 
Andre Schütz <schuetz.an...@gmx.net>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to