Hello,

I tried your approach and could find one mistake in my code.
After the stepwise adding of the components to my results page,
I found an error in two of my classes that are used on that page.
These two classes did not implement the Serializable interface.
I added the interface to these two classes and the PageExpired
error was gone.

But there is still another error. My PageableListView does not
display the results when I click on one of the links in the 
AjaxPagingNavigator. The first page is displayed but the other
pages in the list are nearly empty.
They are not completely empty. I have 3 elements in an item of
the PageableListView populateItem Method that must be filled
in the html page.
The elements are title, description and time.

My code looks as follows:

/***************
 * Code
 */

private void displayResults(Vector<LoadableListingEntryModel> results, int 
entriesPerPage) {
        WebMarkupContainer datacontainer = new 
WebMarkupContainer("listviewContainer");
        datacontainer.setOutputMarkupId(true);
        add(datacontainer);

        PageableListView listview = new PageableListView("listview", results, 
entriesPerPage) {
                StringBuilder sb;

                @Override
                protected void populateItem(ListItem item) {
                        if (item != null) {
                                LoadableListingEntryModel model = 
(LoadableListingEntryModel)item.getModelObject();
                                DefaultSearchResult s = 
model.getObject().getResult();
                                String description = s.getDescription();
                                String title = s.getTitle();

                                item.add(new ExternalLink("title", title));
                                item.add(new Label("description", description));
                                item.add(new Label("time", 
s.getTime()).setEscapeModelStrings(false));
                        }
                }
        };

        listview.setReuseItems(true);
        datacontainer.add(listview);
        AjaxPagingNavigator apn = new AjaxPagingNavigator("navigator", 
listview){
            @Override
            protected void onAjaxEvent(AjaxRequestTarget target) {
                super.onAjaxEvent(target);
                target.appendJavaScript("scrollTo(0,0)");
            }
        };
        datacontainer.add(apn);
        datacontainer.setVersioned(false);
}

/***************
 * Code
 */

The LoadableListingEntryModel was one of the two classes
that got the Serializable interface.
When I click on one of the links of the AjaxPagingNavigator,
the title and the description fields are emtpy. The time
field is filled.

I checked the items and have e.g. 60 items with title, 
description and time content. But only the time content
is displayed, when I click on one of the
AjaxPagingNavigator links.

This error only occurs, if the Google Adsense Code is
in the site. Could it be possible, that the Ajax call of
the PageableListView has a problem?

Thanks,
Andre

On Sat, 07 Apr 2012 21:46:53 +0200
Bas Gooren <b...@iswd.nl> wrote:

> Yes.
> 
> Op 7-4-2012 20:37, schreef Andre Schütz:
> > Thank you for the answer, I will try your 4 steps.
> >
> > Just as information. When you say, that I can make the form
> > stateless, do you talk about the StatelessForm class?
> >
> > Andre
> >
> > On Sat, 07 Apr 2012 16:06:15 +0200
> > Bas Gooren<b...@iswd.nl>  wrote:
> >
> >> Hi,
> >>
> >> I would suggest the following:
> >> 1) add a very simple test page: TestPage extends WebPage, which only has
> >> the search form on it (nothing else!)
> >> 2) see if that works multiple times in a row
> >> 3) if that works, add your google analytics code
> >> 4) repeat steps 1-2
> >>
> >> In other words: eliminitate all other dependencies, so you can test (in
> >> isolation) if the google analytics code (or the component you've wrapped
> >> it in) is really the issue you are facing.
> >>
> >> You say that everything works ok when you add the query parameter for
> >> the search. Having that parameter means you have a form with
> >> method="get"? That, to me, would indicate you can make the form
> >> stateless, which should prevent your search from redirecting to a
> >> stateful url. (The /wicket/page start of the url indicates a stateful 
> >> page).
> >>
> >> But please start with steps 1-4 above to make sure you are looking in
> >> the right place for the cause of your PageExpiredException.
> >>
> >> Bas
> >>
> >> Op 7-4-2012 14:04, schreef Andre Schütz:
> >>> Hi,
> >>>
> >>> I tested the page and could localize the following error:
> >>>
> >>> page expired:
> >>>
> >>> http://localhost:8080/wicket/page?7-1.IFormSubmitListener-resultsContent-searchPanel-searchForm
> >>>
> >>> This means. The error occurs, when I make another search via my
> >>> search form which is a normal Form with a textfield and a submit
> >>> button. But, when I change the keyword in the URL (represented as
> >>> q=KEYWORD parameter), the search works without the error.
> >>> It seems, that the Form throws the error when the Google Analytics
> >>> Code is in the header.
> >>>
> >>> Any idea how I can solve that problem?
> >>>
> >>> Andre
> >>>
> >>> On Fri, 06 Apr 2012 19:36:28 +0200
> >>> Bas Gooren<b...@iswd.nl>   wrote:
> >>>
> >>>> Hi Andre,
> >>>>
> >>>> No, we have been using the tracking code for years with wicket (1.3, 1.4
> >>>> and 1.5) with 0 issues.
> >>>>
> >>>> I'm certain your Page expired error is caused by something else.
> >>>>
> >>>>    From your description it sounds like your "search results" page is
> >>>> stateful, but no longer available when you perform a new search. That
> >>>> can happen for a variety of reasons.
> >>>> What usually happens to narrow the problem down is to strip the page as
> >>>> far as possible, and see if it works. Incrementally add components until
> >>>> it breaks again and you will have found the culprit.
> >>>>
> >>>> Another possibility is that you have non-standard settings for wicket
> >>>> session (page) management. But my guess is that this is not the case.
> >>>>
> >>>> Kind regards,
> >>>>
> >>>> Bas
> >>>>
> >>>> Op 6-4-2012 19:25, schreef Andre Schütz:
> >>>>> Hello,
> >>>>>
> >>>>> did nobody have the same problem with the new Google Analytics code?
> >>>>>
> >>>>> I added the code directly into the .html file of my WebPage class.
> >>>>>
> >>>>> Andre
> >>>>>
> >>>>> On Thu, 5 Apr 2012 14:54:50 +0200
> >>>>> Andre Schütz<wic...@faustas.de>    wrote:
> >>>>>
> >>>>>> Hello,
> >>>>>>
> >>>>>> we added the actual Google Analytics Tracking Code into our
> >>>>>> Wicket application. The code is rendered on every single
> >>>>>> page directly before the closing</head>    tag.
> >>>>>>
> >>>>>> Our problem is the following:
> >>>>>> Page 1 with search box ->    search for something
> >>>>>> Page 2 is a search site where the search request is done
> >>>>>> Page 3 is the result page, where the search result is presented
> >>>>>>
> >>>>>> We do:
> >>>>>> Page 1 ->    search for something
> >>>>>> Page 2 appears and shows search progress
> >>>>>> Page 3 appears and displays the results
> >>>>>> Page 3 has a search box and we start another search
> >>>>>> -->    Page expired error
> >>>>>>
> >>>>>> Any ideas why this happens and how we can stop that?
> >>>>>>
> >>>>>> Thanks,
> >>>>>> Andre
> >>>>>>
> >>>>>> -- 
> >>>>>> Andre Schütz<wic...@faustas.de>
> >>>>>>
> >>>>>> ---------------------------------------------------------------------
> >>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> >>>>>> For additional commands, e-mail: users-h...@wicket.apache.org
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org


-- 
Andre Schütz <wic...@faustas.de>

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

Reply via email to