Hi Andre,

Without a quickstart it's nearly impossible to help.

Nevertheless, as before, I expect this has to do with either a model that loses track of it's data (could be a serialization issue?), or incorrect usage of said model.

When you say that after clicking a link in the navigator "the results are empty", how did you find out about that? I'd suggest doing some debugging (e.g. set some breakpoints in your code and wicket code) in your favorite IDE.

Some breakpoint ideas:
- Your model which contains the results: set a breakpoint in #getObject() to make sure it is called, and check what it returns - PageableListView#onPopulateItem: check if it is called (= a re-render), and what the item's model contains

Bas

Op 21-4-2012 1:01, schreef Andre Schütz:
Hi,

I tried to reproduce the error with a quickstart project
but was not successful. The quickstart is running fine with
Google Analytics and PageableListView.

I think that the project is to complex and the error is
somewhere else.
The only solution I can imagine is a detailed explanation
of my problem with my new findings.
May be, someone had the same problem
or has an idea where I could search for the error.

I hope that someone reads the following explanation
and has an idea. I would be very thankful.

My problem:
- I added Google Analytics to my page and have a
PageableListView on my results page.
- I have 60 results for my PageableListView and show
10 entries per page. When the page is rendered, the
PageableListView is constructed and show the first 10
entries.
- The PagingNavigator show 6 pages of entries.

The error:
- When I click on one of the links of the PagingNavigator,
the entries of the PageableListView are empty.

I checked the results that were delivered to the PageableListView.
When the PageableListView is constructed, the 60 results
are filled and not empty. After clicking on one of the
links in the PagingNavigator, the results are empty!!!!!

I saw the empty results in the DebugBar and with an
additional System.out.println within the populateItem method
of the PageableListView.

I would be very thankful, if someone has an idea or knows
another solution that I can try.
I try to solve the error since more than 2 weeks and have no new clue.

Many thanks,
Andre





On Tue, 17 Apr 2012 22:31:27 +0200
Andre Schütz<andre-p...@gmx.de>  wrote:

Hi, I will try to complete that in the next days and
attach the quickstart as an answer.

Thank you for the help,
Andre

On Mon, 16 Apr 2012 22:57:11 +0200
Bas Gooren<b...@iswd.nl>  wrote:

Hi,

Can you build a small quickstart so I can have a look at things when
they are not working?
So just the bare minimum where it's not working: your page that is not
working with a dummy model (e.g. with hardcoded results).

Bas

Op 16-4-2012 20:50, schreef Andre Schütz:
Hi,

I tried with super.renderHead..., but the result is the
same. The PageableListView is empty after clicking on
one of links in the PagingNavigator.

Additinally, I fodun out that the elements (listItem) are
empty when I click on one of the links in the PagingNavigator.
They are filled, when the PageableListView is build.
Any idea why how that could happen?

Andre

On Fri, 13 Apr 2012 10:29:41 +0200
Bas Gooren<b...@iswd.nl>   wrote:

Hi,

What happens if you change that to:

@Override
public void renderHead(HeaderResponse response) {
     super.renderHead(response);
     String script = "var _gaq = _gaq || ...";
     response.renderJavaScript(script, null);
}

? (note that I added a call to super.renderHead());

Bas

Op 11-4-2012 23:08, schreef Andre Schütz:
Hi,

I implemented your version but still I get the same error, if
I have the Google Analytics Code in the head.

Could it be an error with the way I insert the Google
Analytics Code? I do it in the following way.

In my WebPage class I overwrite the following method:

@Override
public void renderHead(HeaderResponse response) {
     String script = "var _gaq = _gaq || ...";
     response.renderJavaScript(script, null);
}

Andre

On Wed, 11 Apr 2012 11:38:52 +0200
Bas Gooren<b...@iswd.nl>    wrote:

Well, for starters I wonder why you are using multiple
LoadableDetachableModels in a Vector?

What we do 99% of the time is this:
- Wrap the entire resultset in a LDM
- Feed that LDM to a ListView or a variant (we have a custom
RepeatingView for paged database listings)
- Use PropertyModels inside the repeater item(s) (or not, since the
ListView will refresh itself anyway)

I'm pretty sure you don't need setReuseItems(true) in this case; The
only reason I've seen where it's required on a ListView is when you use
it inside a form and need form validation to work. Since I don't see any
form fields inside your listview I guess this is not the case.

I also wonder why you had "datacontainer.setVersioned(false)"?

E.g.:

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

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

            @Override
            protected void populateItem(ListItem<DefaultSearchResult>     item) 
{
                DefaultSearchResult s = item.getModelObject();

                // Either (A)
            item.add(new ExternalLink("title", new PropertyModel(item.getModel(), 
"title"));
            // Or (B)
            item.add(new ExternalLink("title", s.getTitle());

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

        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);
}




Op 11-4-2012 11:22, schreef wic...@faustas.de:
Hi,

thank you for the answer.

The "they are not completely empty" means the following. My results variable
is a Vector that contains LoadableDetachableModel's in the form of the
LoaableListingEntryModel. This model contains a class that has two variables
that I access with getResults() and getTime().
The content of the getResults() variable is a class that implements the 
Serializable
interface. The getTime() variable just has a Vector with time strings.

Now comes the interesting part. When I click on one of the links from the
PagingNavigator, the content of the getTime() variable is displayed in each
single ListItem. The getResults() class is empty. The content of the 
getResults()
class is only shown after a page reload and once again empty after clicking
on one of the links from the PagingNavigator.
That's the reason why I said it is "not completely empty".

I know that there are 60 results to display. The PagingNavigator shows 6
links for 10 entries per page. But after clicking on one of the links, the 
objects
from the getResults() class are empty.

Any idea?
Andre

----- Original Message -----
From: b...@iswd.nl
To: users@wicket.apache.org
Date: 11.04.2012 00:51:38
Subject: Re: Page Expired with Google Analytics Tracking Code


Hi,

It sounds a lot like you are not using models properly. E.g. your
"results" method parameter has a length which overflows the page size
(and thus the pagingnavigator renders page links), but on a second
request the contents of "results" are null/empty?

Try debugging PageableListView#populateItem() and check what its model
points to.

Can you be more specific with regard to "they are not completely empty"?
What exactly do you see, and what do you expect?

Kind regards,

Bas

Op 10-4-2012 22:19, schreef Andre Schütz:
Hi,

nobody an idea why the PageableListView is empty after clicking
on one of the links from the PagingNavigator?
After reloading of the page, the PageableListView is filled and
once again empty when I click on oe of the links from the
PagingNavigator.

It seems, that the Listitem's are empty when I click on one of
the links in the PagingNavigator. But there are definitely more
items than just for one page and the PagingNavigator shows 6
possible pages.

Thanks,
Andre

On Mon, 9 Apr 2012 19:44:34 +0200
Andre Schütz<wic...@faustas.de>      wrote:

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
---------------------------------------------------------------------
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

---------------------------------------------------------------------
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


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

Reply via email to