You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Tauren Mills <ta...@tauren.com> on 2007/12/19 08:21:38 UTC

Strange wicket bug in DataView?

I'm having an Exception that is happening before any of my
Link.onClick() code is executed, making me wonder if there is a wicket
bug of some sort.

I have a DataView with an ActionPanel in each row that contains a
Link. There is no AJAX on this page.  When I load the page with the
DataView for the first time, clicking the Link doesn't work and I get
an Exception (see below).  But if I click the browser back button,
then click the same link, it works.  However, this problem only occurs
for some of the data records, not all of them.  But the same data
records always break.  I thought it was a data problem because of
this, but tracing back into the wicket code seems to indicate
otherwise.  Also, I'm running on the latest wicket trunk that I
updated to about 15 minutes ago.

The URLs that are output for the Links in the dataview when the page
is first loaded is (dataview has only 2 data records):

http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::

When I hit the back button, the URLs for that same links are:

http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:5:actions:select::ILinkListener::
http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:6:actions:select::ILinkListener::

The exception that is thrown is this (only when the first links are
clicked, not the links after hitting the back button):

WicketMessage: component reports:reports:1:actions:select not found on
page com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
= 6], listener interface = [RequestListenerInterface
name=ILinkListener, method=public abstract void
org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]

Root cause:

org.apache.wicket.WicketRuntimeException: component
reports:reports:1:actions:select not found on page
com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
= 6], listener interface = [RequestListenerInterface
name=ILinkListener, method=public abstract void
org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveListenerInterfaceTarget(AbstractRequestCycleProcessor.java:411)
at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveRenderedPage(AbstractRequestCycleProcessor.java:456)
at org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:139)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1152)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1245)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:489)
at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:354)
at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:121)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
at org.mortbay.jetty.Server.handle(Server.java:269)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:208)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)

Sure enough, when I trace the wicket code and examine the data in
memory, the first time the dataview page is loaded, the component path
to the actual components are values 3 and 4.  In fact, if after I load
the page for the first time, I manually enter the following URLs, I
get the correct page without an exception:

http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:3:actions:select::ILinkListener::
http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:4:actions:select::ILinkListener::

Why would the URLs that are rendered the first time be wrong?  Is
there something in my code that could cause this?

Here is a trimmed down version of the code:

    public ReportListPanel(String id, final Service service) {
        super(id);

        this.service = service;

        ReportsDataProvider dataProvider = new ReportsDataProvider(dao);
        Report filter = (Report) dataProvider.getFilterState();
        filter.setService(service);
        dataProvider.setFilterState(filter);

		final DataView reports = new DataView("reports", dataProvider)
		{
			@Override
			protected void populateItem(final Item item)
			{
		        Report report = (Report) item.getModelObject();
		        item.setModel(new CompoundPropertyModel(report));
		        item.add(new ActionPanel(actions",item.getModel()));
		};
	    reports.setItemsPerPage(40);
	    add(reports);
    }

    class ActionPanel extends Panel
    {
    	public ActionPanel(String id, IModel model)
    	{
    		super(id, model);
    		setModel(model);

    		Link link = new Link("select",model) {
    			@Override
    			public void onClick() {
					setResponsePage(new
ReportDetailsPage(getPage(),(Report)getModelObject(),service));;
    			}
    		};
    		link.add(new Label("summary"));
    		add(link);
    	}
    }

Any help would be appreciated!

Thanks,
Tauren

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


Re: Strange wicket bug in DataView?

Posted by ig...@gmail.com.
do all browsers send it?

-igor

On 12/21/07, Matej Knopp <ma...@gmail.com> wrote:
> Maybe, just maybe, we could look at the accept header, before
> rendering the page...
>
> -Matej
>
> On Dec 21, 2007 6:42 AM, Igor Vaynberg <ig...@gmail.com> wrote:
> > that is actually in our gotchas wiki page - images with src="" cause a
> > request to the page...
> >
> > -igor
> >
> >
> >
> > On Dec 20, 2007 6:54 PM, Tauren Mills <ta...@tauren.com> wrote:
> > > I think this problem is caused by the browser.  Using Firebug, it
> > > looks like the browser is actually requesting the page a second time.
> > > Both requests go to:
> > > http://localhost:8080/db/app/?wicket:interface=:15::::
> > >
> > > Here are the request headers from the first request:
> > >
> > > Host: localhost:8080
> > > User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
> > > rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
> > > Accept:
> text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
> > > Accept-Language: en-us,en;q=0.5
> > > Accept-Encoding: gzip,deflate
> > > Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
> > > Keep-Alive: 300
> > > Connection: keep-alive
> > > Referer: http://localhost:8080/db/app/?wicket:interface=:2::::
> > > Cookie: JSESSIONID=1hndka1no7ub6; styleswitcher_style=small
> > >
> > > The browser then makes a second request:
> > >
> > > Host: localhost:8080
> > > User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
> > > rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
> > > Accept: image/png,*/*;q=0.5
> > > Accept-Language: en-us,en;q=0.5
> > > Accept-Encoding: gzip,deflate
> > > Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
> > > Keep-Alive: 300
> > > Connection: keep-alive
> > > Referer: http://localhost:8080/db/app/?wicket:interface=:3::::
> > > Cookie: JSESSIONID=1hndka1no7ub6; styleswitcher_style=small
> > > Cache-Control: max-age=0
> > >
> > > Note that the second request has a different Accept (images only?) and
> > > a Cache-Control.
> > >
> > > This seems to only be happening to me when the image source is empty.
> > > Even having any text in there works.  The following wicket output
> > > causes the problem:
> > > <img wicket:id="image1" src=""/>
> > >
> > > So it looks like if there is an image on the page without a source
> > > (not just a broken image), that Firefox requests the page URL again.
> > > And by doing so, causes my DataView to refresh.  But it doesn't
> > > refresh the DOM on the 2nd request, only images.  Thus the links are
> > > no longer valid.
> > >
> > > To solve this problem, I just need to make sure that my image src is
> > > never an empty string.  Here is a simple hack that I did to my
> > > StaticImage class:
> > >
> > > public class StaticImage extends WebComponent {
> > >         private static final long serialVersionUID = 1L;
> > >
> > >     public StaticImage(String id, IModel model) {
> > >         super(id, model);
> > >     }
> > >
> > >     protected void onComponentTag(ComponentTag tag) {
> > >         checkComponentTag(tag, "img");
> > >         String src = getModelObjectAsString();
> > >         tag.put("src", (!src.equals("")?src:"no_image") );
> > >     }
> > >
> > > }
> > >
> > > With this, img src="no_image" in the markup.  It doesn't render of
> > > course, but it also doesn't cause a 2nd page refresh.
> > >
> > > One last thing.  If I just add <img src=""/> to my page's HTML, it
> > > appears that it is rewritten by wicket to be this: <img src="../"/>.
> > > So maybe this is a problem that was already discovered and solved.
> > > But when I made a custom component that alters the src, I lost that
> > > solution.
> > >
> > > I guess in the end, this isn't a wicket problem.  It isn't really even
> > > a problem with my application, although I can solve it in my
> > > application.  I don't know enough about why Firefox is doing this, so
> > > it might not even be a browser problem.  Who knows...
> > >
> > > I hope this helps someone else who runs into a similar issue.
> > >
> > > Tauren
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > On Dec 20, 2007 4:16 PM, Tauren Mills <ta...@tauren.com> wrote:
> > > > Gwyn,
> > > >
> > > > Thanks for the guidance!  The DataProvider.iterator was being executed
> > > > twice.  I put a breakpoint in iterator() and it would pause when the
> > > > page first started to load.  Then I'd continue running the code, and
> > > > the breakpoint was hit again.  At that time, the full page was
> > > > rendered except for some images on the page, and the browser was
> > > > paused loading again because of the breakpoint.  When I continued
> > > > running the code, the page would finish loading.
> > > >
> > > > The images that weren't loaded are URLs stored in my DB.  I found that
> > > > when I had image URLs in the DB, everything worked fine.  But when I
> > > > had NULL entries for the images, then I'd get this exception and the
> > > > iterator would run twice.  So when the iterator would run twice, the
> > > > component hierarchy would change, causing the link URLs to no longer
> > > > be valid.
> > > >
> > > > I'm still tracking it down to figure out exactly what is going on.
> > > > But you got me on the right track.  And now  I'm thinking it is more
> > > > of a problem in my application or database than in wicket itself.
> > > > Which is what I was hoping was the case anyway! :)
> > > >
> > > > Tauren
> > > >
> > > >
> > > >
> > > > On Dec 20, 2007 7:43 AM, Gwyn Evans <gw...@gmail.com> wrote:
> > > > > No real idea, but I'd be tempted to stick in some diagnostic logging
> > > > > to log the calls to the DataProvider & the details of the lists it
> > > > > returns, just to check there's nothing odd happening there...
> > > > >
> > > > > /Gwyn
> > > > >
> > > > >
> > > > > On 20/12/2007, Tauren Mills <ta...@tauren.com> wrote:
> > > > > > Thanks.  I will try to put together a quickstart, but I'm not sure
> I
> > > > > > can duplicate the problem in it.
> > > > > >
> > > > > > Tauren
> > > > > >
> > > > > >
> > > > > > On Dec 19, 2007 3:23 PM, Matej Knopp <ma...@gmail.com>
> wrote:
> > > > > > > This is definitely strange. However without posting more code
> (or
> > > > > > > preferably a complete testcase to reproduce) I don't really know
> how
> > > > > > > to help you with it.
> > > > > > >
> > > > > > > -Matej
> > > > > > >
> > > > > > >
> > > > > > > On Dec 20, 2007 12:05 AM, Tauren Mills <ta...@tauren.com>
> wrote:
> > > > > > > > Does anyone have any thoughts on this problem?  I realize this
> it may
> > > > > > > > seem unique and isolated, but are there any suggestions even
> on how to
> > > > > > > > figure out what is wrong?  How can I figure out why the
> component path
> > > > > > > > in the URLs for the Links in the DataView are not matching the
> > > > > > > > component hierarchy?  These are the URLs output at initial
> page
> > > > > > > > creation time:
> > > > > > > >
> > > > > > > >
> http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> > > > > > > >
> http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
> > > > > > > >
> > > > > > > > However, at the time that onClick is processed, the component
> > > > > > > > hierarchy seems to have changed and now have the value of 3
> and 4
> > > > > > > > instead of 1 and 2.  The links above don't work, but the
> following
> > > > > > > > links do if I manually enter them:
> > > > > > > >
> > > > > > > >
> http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:3:actions:select::ILinkListener::
> > > > > > > >
> http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:4:actions:select::ILinkListener::
> > > > > > > >
> > > > > > > > Its almost as if a secondary page render has occurred.  But
> I've added
> > > > > > > > logging to my page and don't see any extra log output.
> > > > > > > >
> > > > > > > > My project is basically done and ready to launch, but this is
> holding
> > > > > > > > it up.  Any ideas or suggestions?
> > > > > > > >
> > > > > > > > Thanks!
> > > > > > > > Tauren
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > On Dec 18, 2007 11:21 PM, Tauren Mills <ta...@tauren.com>
> wrote:
> > > > > > > > > I'm having an Exception that is happening before any of my
> > > > > > > > > Link.onClick() code is executed, making me wonder if there
> is a wicket
> > > > > > > > > bug of some sort.
> > > > > > > > >
> > > > > > > > > I have a DataView with an ActionPanel in each row that
> contains a
> > > > > > > > > Link. There is no AJAX on this page.  When I load the page
> with the
> > > > > > > > > DataView for the first time, clicking the Link doesn't work
> and I get
> > > > > > > > > an Exception (see below).  But if I click the browser back
> button,
> > > > > > > > > then click the same link, it works.  However, this problem
> only occurs
> > > > > > > > > for some of the data records, not all of them.  But the same
> data
> > > > > > > > > records always break.  I thought it was a data problem
> because of
> > > > > > > > > this, but tracing back into the wicket code seems to
> indicate
> > > > > > > > > otherwise.  Also, I'm running on the latest wicket trunk
> that I
> > > > > > > > > updated to about 15 minutes ago.
> > > > > > > > >
> > > > > > > > > The URLs that are output for the Links in the dataview when
> the page
> > > > > > > > > is first loaded is (dataview has only 2 data records):
> > > > > > > > >
> > > > > > > > >
> http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> > > > > > > > >
> http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
> > > > > > > > >
> > > > > > > > > When I hit the back button, the URLs for that same links
> are:
> > > > > > > > >
> > > > > > > > >
> http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:5:actions:select::ILinkListener::
> > > > > > > > >
> http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:6:actions:select::ILinkListener::
> > > > > > > > >
> > > > > > > > > The exception that is thrown is this (only when the first
> links are
> > > > > > > > > clicked, not the links after hitting the back button):
> > > > > > > > >
> > > > > > > > > WicketMessage: component reports:reports:1:actions:select
> not found on
> > > > > > > > > page
> com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> > > > > > > > > = 6], listener interface = [RequestListenerInterface
> > > > > > > > > name=ILinkListener, method=public abstract void
> > > > > > > > >
> org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> > > > > > > > >
> > > > > > > > > Root cause:
> > > > > > > > >
> > > > > > > > > org.apache.wicket.WicketRuntimeException: component
> > > > > > > > > reports:reports:1:actions:select not found on page
> > > > > > > > >
> com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> > > > > > > > > = 6], listener interface = [RequestListenerInterface
> > > > > > > > > name=ILinkListener, method=public abstract void
> > > > > > > > >
> org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> > > > > > > > > at
> org.apache.wicket.request.AbstractRequestCycleProcessor.resolveListenerInterfaceTarget(AbstractRequestCycleProcessor.java:411)
> > > > > > > > > at
> org.apache.wicket.request.AbstractRequestCycleProcessor.resolveRenderedPage(AbstractRequestCycleProcessor.java:456)
> > > > > > > > > at
> org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:139)
> > > > > > > > > at
> org.apache.wicket.RequestCycle.step(RequestCycle.java:1152)
> > > > > > > > > at
> org.apache.wicket.RequestCycle.steps(RequestCycle.java:1245)
> > > > > > > > > at
> org.apache.wicket.RequestCycle.request(RequestCycle.java:489)
> > > > > > > > > at
> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:354)
> > > > > > > > > at
> org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:121)
> > > > > > > > > at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > > > > > > > > at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > > > > > > > > at
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
> > > > > > > > > at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050)
> > > > > > > > > at
> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
> > > > > > > > > at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
> > > > > > > > > at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
> > > > > > > > > at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354)
> > > > > > > > > at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
> > > > > > > > > at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
> > > > > > > > > at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
> > > > > > > > > at org.mortbay.jetty.Server.handle(Server.java:269)
> > > > > > > > > at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
> > > > > > > > > at
> org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687)
> > > > > > > > > at
> org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
> > > > > > > > > at
> org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
> > > > > > > > > at
> org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
> > > > > > > > > at
> org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:208)
> > > > > > > > > at
> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
> > > > > > > > >
> > > > > > > > > Sure enough, when I trace the wicket code and examine the
> data in
> > > > > > > > > memory, the first time the dataview page is loaded, the
> component path
> > > > > > > > > to the actual components are values 3 and 4.  In fact, if
> after I load
> > > > > > > > > the page for the first time, I manually enter the following
> URLs, I
> > > > > > > > > get the correct page without an exception:
> > > > > > > > >
> > > > > > > > >
> http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:3:actions:select::ILinkListener::
> > > > > > > > >
> http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:4:actions:select::ILinkListener::
> > > > > > > > >
> > > > > > > > > Why would the URLs that are rendered the first time be
> wrong?  Is
> > > > > > > > > there something in my code that could cause this?
> > > > > > > > >
> > > > > > > > > Here is a trimmed down version of the code:
> > > > > > > > >
> > > > > > > > >     public ReportListPanel(String id, final Service service)
> {
> > > > > > > > >         super(id);
> > > > > > > > >
> > > > > > > > >         this.service = service;
> > > > > > > > >
> > > > > > > > >         ReportsDataProvider dataProvider = new
> ReportsDataProvider(dao);
> > > > > > > > >         Report filter = (Report)
> dataProvider.getFilterState();
> > > > > > > > >         filter.setService(service);
> > > > > > > > >         dataProvider.setFilterState(filter);
> > > > > > > > >
> > > > > > > > >                 final DataView reports = new
> DataView("reports", dataProvider)
> > > > > > > > >                 {
> > > > > > > > >                         @Override
> > > > > > > > >                         protected void populateItem(final
> Item item)
> > > > > > > > >                         {
> > > > > > > > >                         Report report = (Report)
> item.getModelObject();
> > > > > > > > >                         item.setModel(new
> CompoundPropertyModel(report));
> > > > > > > > >                         item.add(new
> ActionPanel(actions",item.getModel()));
> > > > > > > > >                 };
> > > > > > > > >             reports.setItemsPerPage(40);
> > > > > > > > >             add(reports);
> > > > > > > > >     }
> > > > > > > > >
> > > > > > > > >     class ActionPanel extends Panel
> > > > > > > > >     {
> > > > > > > > >         public ActionPanel(String id, IModel model)
> > > > > > > > >         {
> > > > > > > > >                 super(id, model);
> > > > > > > > >                 setModel(model);
> > > > > > > > >
> > > > > > > > >                 Link link = new Link("select",model) {
> > > > > > > > >                         @Override
> > > > > > > > >                         public void onClick() {
> > > > > > > > >                                         setResponsePage(new
> > > > > > > > >
> ReportDetailsPage(getPage(),(Report)getModelObject(),service));;
> > > > > > > > >                         }
> > > > > > > > >                 };
> > > > > > > > >                 link.add(new Label("summary"));
> > > > > > > > >                 add(link);
> > > > > > > > >         }
> > > > > > > > >     }
> > > > > > > > >
> > > > > > > > > Any help would be appreciated!
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > > Tauren
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> ---------------------------------------------------------------------
> > > > > > > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > > > > > > For additional commands, e-mail: users-help@wicket.apache.org
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> ---------------------------------------------------------------------
> > > > > > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > > > > > For additional commands, e-mail: users-help@wicket.apache.org
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> ---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > > > > For additional commands, e-mail: users-help@wicket.apache.org
> > > > > >
> > > > > >
> > > > >
> > > > >
> ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > > > For additional commands, e-mail: users-help@wicket.apache.org
> > > > >
> > > > >
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > For additional commands, e-mail: users-help@wicket.apache.org
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

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


Re: Strange wicket bug in DataView?

Posted by Matej Knopp <ma...@gmail.com>.
Maybe, just maybe, we could look at the accept header, before
rendering the page...

-Matej

On Dec 21, 2007 6:42 AM, Igor Vaynberg <ig...@gmail.com> wrote:
> that is actually in our gotchas wiki page - images with src="" cause a
> request to the page...
>
> -igor
>
>
>
> On Dec 20, 2007 6:54 PM, Tauren Mills <ta...@tauren.com> wrote:
> > I think this problem is caused by the browser.  Using Firebug, it
> > looks like the browser is actually requesting the page a second time.
> > Both requests go to:
> > http://localhost:8080/db/app/?wicket:interface=:15::::
> >
> > Here are the request headers from the first request:
> >
> > Host: localhost:8080
> > User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
> > rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
> > Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
> > Accept-Language: en-us,en;q=0.5
> > Accept-Encoding: gzip,deflate
> > Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
> > Keep-Alive: 300
> > Connection: keep-alive
> > Referer: http://localhost:8080/db/app/?wicket:interface=:2::::
> > Cookie: JSESSIONID=1hndka1no7ub6; styleswitcher_style=small
> >
> > The browser then makes a second request:
> >
> > Host: localhost:8080
> > User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
> > rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
> > Accept: image/png,*/*;q=0.5
> > Accept-Language: en-us,en;q=0.5
> > Accept-Encoding: gzip,deflate
> > Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
> > Keep-Alive: 300
> > Connection: keep-alive
> > Referer: http://localhost:8080/db/app/?wicket:interface=:3::::
> > Cookie: JSESSIONID=1hndka1no7ub6; styleswitcher_style=small
> > Cache-Control: max-age=0
> >
> > Note that the second request has a different Accept (images only?) and
> > a Cache-Control.
> >
> > This seems to only be happening to me when the image source is empty.
> > Even having any text in there works.  The following wicket output
> > causes the problem:
> > <img wicket:id="image1" src=""/>
> >
> > So it looks like if there is an image on the page without a source
> > (not just a broken image), that Firefox requests the page URL again.
> > And by doing so, causes my DataView to refresh.  But it doesn't
> > refresh the DOM on the 2nd request, only images.  Thus the links are
> > no longer valid.
> >
> > To solve this problem, I just need to make sure that my image src is
> > never an empty string.  Here is a simple hack that I did to my
> > StaticImage class:
> >
> > public class StaticImage extends WebComponent {
> >         private static final long serialVersionUID = 1L;
> >
> >     public StaticImage(String id, IModel model) {
> >         super(id, model);
> >     }
> >
> >     protected void onComponentTag(ComponentTag tag) {
> >         checkComponentTag(tag, "img");
> >         String src = getModelObjectAsString();
> >         tag.put("src", (!src.equals("")?src:"no_image") );
> >     }
> >
> > }
> >
> > With this, img src="no_image" in the markup.  It doesn't render of
> > course, but it also doesn't cause a 2nd page refresh.
> >
> > One last thing.  If I just add <img src=""/> to my page's HTML, it
> > appears that it is rewritten by wicket to be this: <img src="../"/>.
> > So maybe this is a problem that was already discovered and solved.
> > But when I made a custom component that alters the src, I lost that
> > solution.
> >
> > I guess in the end, this isn't a wicket problem.  It isn't really even
> > a problem with my application, although I can solve it in my
> > application.  I don't know enough about why Firefox is doing this, so
> > it might not even be a browser problem.  Who knows...
> >
> > I hope this helps someone else who runs into a similar issue.
> >
> > Tauren
> >
> >
> >
> >
> >
> >
> >
> >
> > On Dec 20, 2007 4:16 PM, Tauren Mills <ta...@tauren.com> wrote:
> > > Gwyn,
> > >
> > > Thanks for the guidance!  The DataProvider.iterator was being executed
> > > twice.  I put a breakpoint in iterator() and it would pause when the
> > > page first started to load.  Then I'd continue running the code, and
> > > the breakpoint was hit again.  At that time, the full page was
> > > rendered except for some images on the page, and the browser was
> > > paused loading again because of the breakpoint.  When I continued
> > > running the code, the page would finish loading.
> > >
> > > The images that weren't loaded are URLs stored in my DB.  I found that
> > > when I had image URLs in the DB, everything worked fine.  But when I
> > > had NULL entries for the images, then I'd get this exception and the
> > > iterator would run twice.  So when the iterator would run twice, the
> > > component hierarchy would change, causing the link URLs to no longer
> > > be valid.
> > >
> > > I'm still tracking it down to figure out exactly what is going on.
> > > But you got me on the right track.  And now  I'm thinking it is more
> > > of a problem in my application or database than in wicket itself.
> > > Which is what I was hoping was the case anyway! :)
> > >
> > > Tauren
> > >
> > >
> > >
> > > On Dec 20, 2007 7:43 AM, Gwyn Evans <gw...@gmail.com> wrote:
> > > > No real idea, but I'd be tempted to stick in some diagnostic logging
> > > > to log the calls to the DataProvider & the details of the lists it
> > > > returns, just to check there's nothing odd happening there...
> > > >
> > > > /Gwyn
> > > >
> > > >
> > > > On 20/12/2007, Tauren Mills <ta...@tauren.com> wrote:
> > > > > Thanks.  I will try to put together a quickstart, but I'm not sure I
> > > > > can duplicate the problem in it.
> > > > >
> > > > > Tauren
> > > > >
> > > > >
> > > > > On Dec 19, 2007 3:23 PM, Matej Knopp <ma...@gmail.com> wrote:
> > > > > > This is definitely strange. However without posting more code (or
> > > > > > preferably a complete testcase to reproduce) I don't really know how
> > > > > > to help you with it.
> > > > > >
> > > > > > -Matej
> > > > > >
> > > > > >
> > > > > > On Dec 20, 2007 12:05 AM, Tauren Mills <ta...@tauren.com> wrote:
> > > > > > > Does anyone have any thoughts on this problem?  I realize this it may
> > > > > > > seem unique and isolated, but are there any suggestions even on how to
> > > > > > > figure out what is wrong?  How can I figure out why the component path
> > > > > > > in the URLs for the Links in the DataView are not matching the
> > > > > > > component hierarchy?  These are the URLs output at initial page
> > > > > > > creation time:
> > > > > > >
> > > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> > > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
> > > > > > >
> > > > > > > However, at the time that onClick is processed, the component
> > > > > > > hierarchy seems to have changed and now have the value of 3 and 4
> > > > > > > instead of 1 and 2.  The links above don't work, but the following
> > > > > > > links do if I manually enter them:
> > > > > > >
> > > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:3:actions:select::ILinkListener::
> > > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:4:actions:select::ILinkListener::
> > > > > > >
> > > > > > > Its almost as if a secondary page render has occurred.  But I've added
> > > > > > > logging to my page and don't see any extra log output.
> > > > > > >
> > > > > > > My project is basically done and ready to launch, but this is holding
> > > > > > > it up.  Any ideas or suggestions?
> > > > > > >
> > > > > > > Thanks!
> > > > > > > Tauren
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On Dec 18, 2007 11:21 PM, Tauren Mills <ta...@tauren.com> wrote:
> > > > > > > > I'm having an Exception that is happening before any of my
> > > > > > > > Link.onClick() code is executed, making me wonder if there is a wicket
> > > > > > > > bug of some sort.
> > > > > > > >
> > > > > > > > I have a DataView with an ActionPanel in each row that contains a
> > > > > > > > Link. There is no AJAX on this page.  When I load the page with the
> > > > > > > > DataView for the first time, clicking the Link doesn't work and I get
> > > > > > > > an Exception (see below).  But if I click the browser back button,
> > > > > > > > then click the same link, it works.  However, this problem only occurs
> > > > > > > > for some of the data records, not all of them.  But the same data
> > > > > > > > records always break.  I thought it was a data problem because of
> > > > > > > > this, but tracing back into the wicket code seems to indicate
> > > > > > > > otherwise.  Also, I'm running on the latest wicket trunk that I
> > > > > > > > updated to about 15 minutes ago.
> > > > > > > >
> > > > > > > > The URLs that are output for the Links in the dataview when the page
> > > > > > > > is first loaded is (dataview has only 2 data records):
> > > > > > > >
> > > > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> > > > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
> > > > > > > >
> > > > > > > > When I hit the back button, the URLs for that same links are:
> > > > > > > >
> > > > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:5:actions:select::ILinkListener::
> > > > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:6:actions:select::ILinkListener::
> > > > > > > >
> > > > > > > > The exception that is thrown is this (only when the first links are
> > > > > > > > clicked, not the links after hitting the back button):
> > > > > > > >
> > > > > > > > WicketMessage: component reports:reports:1:actions:select not found on
> > > > > > > > page com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> > > > > > > > = 6], listener interface = [RequestListenerInterface
> > > > > > > > name=ILinkListener, method=public abstract void
> > > > > > > > org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> > > > > > > >
> > > > > > > > Root cause:
> > > > > > > >
> > > > > > > > org.apache.wicket.WicketRuntimeException: component
> > > > > > > > reports:reports:1:actions:select not found on page
> > > > > > > > com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> > > > > > > > = 6], listener interface = [RequestListenerInterface
> > > > > > > > name=ILinkListener, method=public abstract void
> > > > > > > > org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> > > > > > > > at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveListenerInterfaceTarget(AbstractRequestCycleProcessor.java:411)
> > > > > > > > at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveRenderedPage(AbstractRequestCycleProcessor.java:456)
> > > > > > > > at org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:139)
> > > > > > > > at org.apache.wicket.RequestCycle.step(RequestCycle.java:1152)
> > > > > > > > at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1245)
> > > > > > > > at org.apache.wicket.RequestCycle.request(RequestCycle.java:489)
> > > > > > > > at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:354)
> > > > > > > > at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:121)
> > > > > > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > > > > > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > > > > > > > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
> > > > > > > > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050)
> > > > > > > > at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
> > > > > > > > at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
> > > > > > > > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
> > > > > > > > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354)
> > > > > > > > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
> > > > > > > > at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
> > > > > > > > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
> > > > > > > > at org.mortbay.jetty.Server.handle(Server.java:269)
> > > > > > > > at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
> > > > > > > > at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687)
> > > > > > > > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
> > > > > > > > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
> > > > > > > > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
> > > > > > > > at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:208)
> > > > > > > > at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
> > > > > > > >
> > > > > > > > Sure enough, when I trace the wicket code and examine the data in
> > > > > > > > memory, the first time the dataview page is loaded, the component path
> > > > > > > > to the actual components are values 3 and 4.  In fact, if after I load
> > > > > > > > the page for the first time, I manually enter the following URLs, I
> > > > > > > > get the correct page without an exception:
> > > > > > > >
> > > > > > > > http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:3:actions:select::ILinkListener::
> > > > > > > > http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:4:actions:select::ILinkListener::
> > > > > > > >
> > > > > > > > Why would the URLs that are rendered the first time be wrong?  Is
> > > > > > > > there something in my code that could cause this?
> > > > > > > >
> > > > > > > > Here is a trimmed down version of the code:
> > > > > > > >
> > > > > > > >     public ReportListPanel(String id, final Service service) {
> > > > > > > >         super(id);
> > > > > > > >
> > > > > > > >         this.service = service;
> > > > > > > >
> > > > > > > >         ReportsDataProvider dataProvider = new ReportsDataProvider(dao);
> > > > > > > >         Report filter = (Report) dataProvider.getFilterState();
> > > > > > > >         filter.setService(service);
> > > > > > > >         dataProvider.setFilterState(filter);
> > > > > > > >
> > > > > > > >                 final DataView reports = new DataView("reports", dataProvider)
> > > > > > > >                 {
> > > > > > > >                         @Override
> > > > > > > >                         protected void populateItem(final Item item)
> > > > > > > >                         {
> > > > > > > >                         Report report = (Report) item.getModelObject();
> > > > > > > >                         item.setModel(new CompoundPropertyModel(report));
> > > > > > > >                         item.add(new ActionPanel(actions",item.getModel()));
> > > > > > > >                 };
> > > > > > > >             reports.setItemsPerPage(40);
> > > > > > > >             add(reports);
> > > > > > > >     }
> > > > > > > >
> > > > > > > >     class ActionPanel extends Panel
> > > > > > > >     {
> > > > > > > >         public ActionPanel(String id, IModel model)
> > > > > > > >         {
> > > > > > > >                 super(id, model);
> > > > > > > >                 setModel(model);
> > > > > > > >
> > > > > > > >                 Link link = new Link("select",model) {
> > > > > > > >                         @Override
> > > > > > > >                         public void onClick() {
> > > > > > > >                                         setResponsePage(new
> > > > > > > > ReportDetailsPage(getPage(),(Report)getModelObject(),service));;
> > > > > > > >                         }
> > > > > > > >                 };
> > > > > > > >                 link.add(new Label("summary"));
> > > > > > > >                 add(link);
> > > > > > > >         }
> > > > > > > >     }
> > > > > > > >
> > > > > > > > Any help would be appreciated!
> > > > > > > >
> > > > > > > > Thanks,
> > > > > > > > Tauren
> > > > > > > >
> > > > > > >
> > > > > > > ---------------------------------------------------------------------
> > > > > > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > > > > > For additional commands, e-mail: users-help@wicket.apache.org
> > > > > > >
> > > > > > >
> > > > > >
> > > > > > ---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > > > > For additional commands, e-mail: users-help@wicket.apache.org
> > > > > >
> > > > > >
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > > > For additional commands, e-mail: users-help@wicket.apache.org
> > > > >
> > > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > > For additional commands, e-mail: users-help@wicket.apache.org
> > > >
> > > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

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


Re: Strange wicket bug in DataView?

Posted by Igor Vaynberg <ig...@gmail.com>.
that is actually in our gotchas wiki page - images with src="" cause a
request to the page...

-igor


On Dec 20, 2007 6:54 PM, Tauren Mills <ta...@tauren.com> wrote:
> I think this problem is caused by the browser.  Using Firebug, it
> looks like the browser is actually requesting the page a second time.
> Both requests go to:
> http://localhost:8080/db/app/?wicket:interface=:15::::
>
> Here are the request headers from the first request:
>
> Host: localhost:8080
> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
> rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
> Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
> Accept-Language: en-us,en;q=0.5
> Accept-Encoding: gzip,deflate
> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
> Keep-Alive: 300
> Connection: keep-alive
> Referer: http://localhost:8080/db/app/?wicket:interface=:2::::
> Cookie: JSESSIONID=1hndka1no7ub6; styleswitcher_style=small
>
> The browser then makes a second request:
>
> Host: localhost:8080
> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
> rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
> Accept: image/png,*/*;q=0.5
> Accept-Language: en-us,en;q=0.5
> Accept-Encoding: gzip,deflate
> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
> Keep-Alive: 300
> Connection: keep-alive
> Referer: http://localhost:8080/db/app/?wicket:interface=:3::::
> Cookie: JSESSIONID=1hndka1no7ub6; styleswitcher_style=small
> Cache-Control: max-age=0
>
> Note that the second request has a different Accept (images only?) and
> a Cache-Control.
>
> This seems to only be happening to me when the image source is empty.
> Even having any text in there works.  The following wicket output
> causes the problem:
> <img wicket:id="image1" src=""/>
>
> So it looks like if there is an image on the page without a source
> (not just a broken image), that Firefox requests the page URL again.
> And by doing so, causes my DataView to refresh.  But it doesn't
> refresh the DOM on the 2nd request, only images.  Thus the links are
> no longer valid.
>
> To solve this problem, I just need to make sure that my image src is
> never an empty string.  Here is a simple hack that I did to my
> StaticImage class:
>
> public class StaticImage extends WebComponent {
>         private static final long serialVersionUID = 1L;
>
>     public StaticImage(String id, IModel model) {
>         super(id, model);
>     }
>
>     protected void onComponentTag(ComponentTag tag) {
>         checkComponentTag(tag, "img");
>         String src = getModelObjectAsString();
>         tag.put("src", (!src.equals("")?src:"no_image") );
>     }
>
> }
>
> With this, img src="no_image" in the markup.  It doesn't render of
> course, but it also doesn't cause a 2nd page refresh.
>
> One last thing.  If I just add <img src=""/> to my page's HTML, it
> appears that it is rewritten by wicket to be this: <img src="../"/>.
> So maybe this is a problem that was already discovered and solved.
> But when I made a custom component that alters the src, I lost that
> solution.
>
> I guess in the end, this isn't a wicket problem.  It isn't really even
> a problem with my application, although I can solve it in my
> application.  I don't know enough about why Firefox is doing this, so
> it might not even be a browser problem.  Who knows...
>
> I hope this helps someone else who runs into a similar issue.
>
> Tauren
>
>
>
>
>
>
>
>
> On Dec 20, 2007 4:16 PM, Tauren Mills <ta...@tauren.com> wrote:
> > Gwyn,
> >
> > Thanks for the guidance!  The DataProvider.iterator was being executed
> > twice.  I put a breakpoint in iterator() and it would pause when the
> > page first started to load.  Then I'd continue running the code, and
> > the breakpoint was hit again.  At that time, the full page was
> > rendered except for some images on the page, and the browser was
> > paused loading again because of the breakpoint.  When I continued
> > running the code, the page would finish loading.
> >
> > The images that weren't loaded are URLs stored in my DB.  I found that
> > when I had image URLs in the DB, everything worked fine.  But when I
> > had NULL entries for the images, then I'd get this exception and the
> > iterator would run twice.  So when the iterator would run twice, the
> > component hierarchy would change, causing the link URLs to no longer
> > be valid.
> >
> > I'm still tracking it down to figure out exactly what is going on.
> > But you got me on the right track.  And now  I'm thinking it is more
> > of a problem in my application or database than in wicket itself.
> > Which is what I was hoping was the case anyway! :)
> >
> > Tauren
> >
> >
> >
> > On Dec 20, 2007 7:43 AM, Gwyn Evans <gw...@gmail.com> wrote:
> > > No real idea, but I'd be tempted to stick in some diagnostic logging
> > > to log the calls to the DataProvider & the details of the lists it
> > > returns, just to check there's nothing odd happening there...
> > >
> > > /Gwyn
> > >
> > >
> > > On 20/12/2007, Tauren Mills <ta...@tauren.com> wrote:
> > > > Thanks.  I will try to put together a quickstart, but I'm not sure I
> > > > can duplicate the problem in it.
> > > >
> > > > Tauren
> > > >
> > > >
> > > > On Dec 19, 2007 3:23 PM, Matej Knopp <ma...@gmail.com> wrote:
> > > > > This is definitely strange. However without posting more code (or
> > > > > preferably a complete testcase to reproduce) I don't really know how
> > > > > to help you with it.
> > > > >
> > > > > -Matej
> > > > >
> > > > >
> > > > > On Dec 20, 2007 12:05 AM, Tauren Mills <ta...@tauren.com> wrote:
> > > > > > Does anyone have any thoughts on this problem?  I realize this it may
> > > > > > seem unique and isolated, but are there any suggestions even on how to
> > > > > > figure out what is wrong?  How can I figure out why the component path
> > > > > > in the URLs for the Links in the DataView are not matching the
> > > > > > component hierarchy?  These are the URLs output at initial page
> > > > > > creation time:
> > > > > >
> > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
> > > > > >
> > > > > > However, at the time that onClick is processed, the component
> > > > > > hierarchy seems to have changed and now have the value of 3 and 4
> > > > > > instead of 1 and 2.  The links above don't work, but the following
> > > > > > links do if I manually enter them:
> > > > > >
> > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:3:actions:select::ILinkListener::
> > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:4:actions:select::ILinkListener::
> > > > > >
> > > > > > Its almost as if a secondary page render has occurred.  But I've added
> > > > > > logging to my page and don't see any extra log output.
> > > > > >
> > > > > > My project is basically done and ready to launch, but this is holding
> > > > > > it up.  Any ideas or suggestions?
> > > > > >
> > > > > > Thanks!
> > > > > > Tauren
> > > > > >
> > > > > >
> > > > > >
> > > > > > On Dec 18, 2007 11:21 PM, Tauren Mills <ta...@tauren.com> wrote:
> > > > > > > I'm having an Exception that is happening before any of my
> > > > > > > Link.onClick() code is executed, making me wonder if there is a wicket
> > > > > > > bug of some sort.
> > > > > > >
> > > > > > > I have a DataView with an ActionPanel in each row that contains a
> > > > > > > Link. There is no AJAX on this page.  When I load the page with the
> > > > > > > DataView for the first time, clicking the Link doesn't work and I get
> > > > > > > an Exception (see below).  But if I click the browser back button,
> > > > > > > then click the same link, it works.  However, this problem only occurs
> > > > > > > for some of the data records, not all of them.  But the same data
> > > > > > > records always break.  I thought it was a data problem because of
> > > > > > > this, but tracing back into the wicket code seems to indicate
> > > > > > > otherwise.  Also, I'm running on the latest wicket trunk that I
> > > > > > > updated to about 15 minutes ago.
> > > > > > >
> > > > > > > The URLs that are output for the Links in the dataview when the page
> > > > > > > is first loaded is (dataview has only 2 data records):
> > > > > > >
> > > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> > > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
> > > > > > >
> > > > > > > When I hit the back button, the URLs for that same links are:
> > > > > > >
> > > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:5:actions:select::ILinkListener::
> > > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:6:actions:select::ILinkListener::
> > > > > > >
> > > > > > > The exception that is thrown is this (only when the first links are
> > > > > > > clicked, not the links after hitting the back button):
> > > > > > >
> > > > > > > WicketMessage: component reports:reports:1:actions:select not found on
> > > > > > > page com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> > > > > > > = 6], listener interface = [RequestListenerInterface
> > > > > > > name=ILinkListener, method=public abstract void
> > > > > > > org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> > > > > > >
> > > > > > > Root cause:
> > > > > > >
> > > > > > > org.apache.wicket.WicketRuntimeException: component
> > > > > > > reports:reports:1:actions:select not found on page
> > > > > > > com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> > > > > > > = 6], listener interface = [RequestListenerInterface
> > > > > > > name=ILinkListener, method=public abstract void
> > > > > > > org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> > > > > > > at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveListenerInterfaceTarget(AbstractRequestCycleProcessor.java:411)
> > > > > > > at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveRenderedPage(AbstractRequestCycleProcessor.java:456)
> > > > > > > at org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:139)
> > > > > > > at org.apache.wicket.RequestCycle.step(RequestCycle.java:1152)
> > > > > > > at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1245)
> > > > > > > at org.apache.wicket.RequestCycle.request(RequestCycle.java:489)
> > > > > > > at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:354)
> > > > > > > at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:121)
> > > > > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > > > > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > > > > > > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
> > > > > > > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050)
> > > > > > > at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
> > > > > > > at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
> > > > > > > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
> > > > > > > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354)
> > > > > > > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
> > > > > > > at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
> > > > > > > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
> > > > > > > at org.mortbay.jetty.Server.handle(Server.java:269)
> > > > > > > at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
> > > > > > > at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687)
> > > > > > > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
> > > > > > > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
> > > > > > > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
> > > > > > > at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:208)
> > > > > > > at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
> > > > > > >
> > > > > > > Sure enough, when I trace the wicket code and examine the data in
> > > > > > > memory, the first time the dataview page is loaded, the component path
> > > > > > > to the actual components are values 3 and 4.  In fact, if after I load
> > > > > > > the page for the first time, I manually enter the following URLs, I
> > > > > > > get the correct page without an exception:
> > > > > > >
> > > > > > > http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:3:actions:select::ILinkListener::
> > > > > > > http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:4:actions:select::ILinkListener::
> > > > > > >
> > > > > > > Why would the URLs that are rendered the first time be wrong?  Is
> > > > > > > there something in my code that could cause this?
> > > > > > >
> > > > > > > Here is a trimmed down version of the code:
> > > > > > >
> > > > > > >     public ReportListPanel(String id, final Service service) {
> > > > > > >         super(id);
> > > > > > >
> > > > > > >         this.service = service;
> > > > > > >
> > > > > > >         ReportsDataProvider dataProvider = new ReportsDataProvider(dao);
> > > > > > >         Report filter = (Report) dataProvider.getFilterState();
> > > > > > >         filter.setService(service);
> > > > > > >         dataProvider.setFilterState(filter);
> > > > > > >
> > > > > > >                 final DataView reports = new DataView("reports", dataProvider)
> > > > > > >                 {
> > > > > > >                         @Override
> > > > > > >                         protected void populateItem(final Item item)
> > > > > > >                         {
> > > > > > >                         Report report = (Report) item.getModelObject();
> > > > > > >                         item.setModel(new CompoundPropertyModel(report));
> > > > > > >                         item.add(new ActionPanel(actions",item.getModel()));
> > > > > > >                 };
> > > > > > >             reports.setItemsPerPage(40);
> > > > > > >             add(reports);
> > > > > > >     }
> > > > > > >
> > > > > > >     class ActionPanel extends Panel
> > > > > > >     {
> > > > > > >         public ActionPanel(String id, IModel model)
> > > > > > >         {
> > > > > > >                 super(id, model);
> > > > > > >                 setModel(model);
> > > > > > >
> > > > > > >                 Link link = new Link("select",model) {
> > > > > > >                         @Override
> > > > > > >                         public void onClick() {
> > > > > > >                                         setResponsePage(new
> > > > > > > ReportDetailsPage(getPage(),(Report)getModelObject(),service));;
> > > > > > >                         }
> > > > > > >                 };
> > > > > > >                 link.add(new Label("summary"));
> > > > > > >                 add(link);
> > > > > > >         }
> > > > > > >     }
> > > > > > >
> > > > > > > Any help would be appreciated!
> > > > > > >
> > > > > > > Thanks,
> > > > > > > Tauren
> > > > > > >
> > > > > >
> > > > > > ---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > > > > For additional commands, e-mail: users-help@wicket.apache.org
> > > > > >
> > > > > >
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > > > For additional commands, e-mail: users-help@wicket.apache.org
> > > > >
> > > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > > For additional commands, e-mail: users-help@wicket.apache.org
> > > >
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > For additional commands, e-mail: users-help@wicket.apache.org
> > >
> > >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

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


Re: Strange wicket bug in DataView?

Posted by Tauren Mills <ta...@tauren.com>.
I think this problem is caused by the browser.  Using Firebug, it
looks like the browser is actually requesting the page a second time.
Both requests go to:
http://localhost:8080/db/app/?wicket:interface=:15::::

Here are the request headers from the first request:

Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://localhost:8080/db/app/?wicket:interface=:2::::
Cookie: JSESSIONID=1hndka1no7ub6; styleswitcher_style=small

The browser then makes a second request:

Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Accept: image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://localhost:8080/db/app/?wicket:interface=:3::::
Cookie: JSESSIONID=1hndka1no7ub6; styleswitcher_style=small
Cache-Control: max-age=0

Note that the second request has a different Accept (images only?) and
a Cache-Control.

This seems to only be happening to me when the image source is empty.
Even having any text in there works.  The following wicket output
causes the problem:
<img wicket:id="image1" src=""/>

So it looks like if there is an image on the page without a source
(not just a broken image), that Firefox requests the page URL again.
And by doing so, causes my DataView to refresh.  But it doesn't
refresh the DOM on the 2nd request, only images.  Thus the links are
no longer valid.

To solve this problem, I just need to make sure that my image src is
never an empty string.  Here is a simple hack that I did to my
StaticImage class:

public class StaticImage extends WebComponent {
	private static final long serialVersionUID = 1L;

    public StaticImage(String id, IModel model) {
        super(id, model);
    }

    protected void onComponentTag(ComponentTag tag) {
        checkComponentTag(tag, "img");
        String src = getModelObjectAsString();
        tag.put("src", (!src.equals("")?src:"no_image") );
    }

}

With this, img src="no_image" in the markup.  It doesn't render of
course, but it also doesn't cause a 2nd page refresh.

One last thing.  If I just add <img src=""/> to my page's HTML, it
appears that it is rewritten by wicket to be this: <img src="../"/>.
So maybe this is a problem that was already discovered and solved.
But when I made a custom component that alters the src, I lost that
solution.

I guess in the end, this isn't a wicket problem.  It isn't really even
a problem with my application, although I can solve it in my
application.  I don't know enough about why Firefox is doing this, so
it might not even be a browser problem.  Who knows...

I hope this helps someone else who runs into a similar issue.

Tauren







On Dec 20, 2007 4:16 PM, Tauren Mills <ta...@tauren.com> wrote:
> Gwyn,
>
> Thanks for the guidance!  The DataProvider.iterator was being executed
> twice.  I put a breakpoint in iterator() and it would pause when the
> page first started to load.  Then I'd continue running the code, and
> the breakpoint was hit again.  At that time, the full page was
> rendered except for some images on the page, and the browser was
> paused loading again because of the breakpoint.  When I continued
> running the code, the page would finish loading.
>
> The images that weren't loaded are URLs stored in my DB.  I found that
> when I had image URLs in the DB, everything worked fine.  But when I
> had NULL entries for the images, then I'd get this exception and the
> iterator would run twice.  So when the iterator would run twice, the
> component hierarchy would change, causing the link URLs to no longer
> be valid.
>
> I'm still tracking it down to figure out exactly what is going on.
> But you got me on the right track.  And now  I'm thinking it is more
> of a problem in my application or database than in wicket itself.
> Which is what I was hoping was the case anyway! :)
>
> Tauren
>
>
>
> On Dec 20, 2007 7:43 AM, Gwyn Evans <gw...@gmail.com> wrote:
> > No real idea, but I'd be tempted to stick in some diagnostic logging
> > to log the calls to the DataProvider & the details of the lists it
> > returns, just to check there's nothing odd happening there...
> >
> > /Gwyn
> >
> >
> > On 20/12/2007, Tauren Mills <ta...@tauren.com> wrote:
> > > Thanks.  I will try to put together a quickstart, but I'm not sure I
> > > can duplicate the problem in it.
> > >
> > > Tauren
> > >
> > >
> > > On Dec 19, 2007 3:23 PM, Matej Knopp <ma...@gmail.com> wrote:
> > > > This is definitely strange. However without posting more code (or
> > > > preferably a complete testcase to reproduce) I don't really know how
> > > > to help you with it.
> > > >
> > > > -Matej
> > > >
> > > >
> > > > On Dec 20, 2007 12:05 AM, Tauren Mills <ta...@tauren.com> wrote:
> > > > > Does anyone have any thoughts on this problem?  I realize this it may
> > > > > seem unique and isolated, but are there any suggestions even on how to
> > > > > figure out what is wrong?  How can I figure out why the component path
> > > > > in the URLs for the Links in the DataView are not matching the
> > > > > component hierarchy?  These are the URLs output at initial page
> > > > > creation time:
> > > > >
> > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
> > > > >
> > > > > However, at the time that onClick is processed, the component
> > > > > hierarchy seems to have changed and now have the value of 3 and 4
> > > > > instead of 1 and 2.  The links above don't work, but the following
> > > > > links do if I manually enter them:
> > > > >
> > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:3:actions:select::ILinkListener::
> > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:4:actions:select::ILinkListener::
> > > > >
> > > > > Its almost as if a secondary page render has occurred.  But I've added
> > > > > logging to my page and don't see any extra log output.
> > > > >
> > > > > My project is basically done and ready to launch, but this is holding
> > > > > it up.  Any ideas or suggestions?
> > > > >
> > > > > Thanks!
> > > > > Tauren
> > > > >
> > > > >
> > > > >
> > > > > On Dec 18, 2007 11:21 PM, Tauren Mills <ta...@tauren.com> wrote:
> > > > > > I'm having an Exception that is happening before any of my
> > > > > > Link.onClick() code is executed, making me wonder if there is a wicket
> > > > > > bug of some sort.
> > > > > >
> > > > > > I have a DataView with an ActionPanel in each row that contains a
> > > > > > Link. There is no AJAX on this page.  When I load the page with the
> > > > > > DataView for the first time, clicking the Link doesn't work and I get
> > > > > > an Exception (see below).  But if I click the browser back button,
> > > > > > then click the same link, it works.  However, this problem only occurs
> > > > > > for some of the data records, not all of them.  But the same data
> > > > > > records always break.  I thought it was a data problem because of
> > > > > > this, but tracing back into the wicket code seems to indicate
> > > > > > otherwise.  Also, I'm running on the latest wicket trunk that I
> > > > > > updated to about 15 minutes ago.
> > > > > >
> > > > > > The URLs that are output for the Links in the dataview when the page
> > > > > > is first loaded is (dataview has only 2 data records):
> > > > > >
> > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
> > > > > >
> > > > > > When I hit the back button, the URLs for that same links are:
> > > > > >
> > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:5:actions:select::ILinkListener::
> > > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:6:actions:select::ILinkListener::
> > > > > >
> > > > > > The exception that is thrown is this (only when the first links are
> > > > > > clicked, not the links after hitting the back button):
> > > > > >
> > > > > > WicketMessage: component reports:reports:1:actions:select not found on
> > > > > > page com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> > > > > > = 6], listener interface = [RequestListenerInterface
> > > > > > name=ILinkListener, method=public abstract void
> > > > > > org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> > > > > >
> > > > > > Root cause:
> > > > > >
> > > > > > org.apache.wicket.WicketRuntimeException: component
> > > > > > reports:reports:1:actions:select not found on page
> > > > > > com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> > > > > > = 6], listener interface = [RequestListenerInterface
> > > > > > name=ILinkListener, method=public abstract void
> > > > > > org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> > > > > > at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveListenerInterfaceTarget(AbstractRequestCycleProcessor.java:411)
> > > > > > at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveRenderedPage(AbstractRequestCycleProcessor.java:456)
> > > > > > at org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:139)
> > > > > > at org.apache.wicket.RequestCycle.step(RequestCycle.java:1152)
> > > > > > at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1245)
> > > > > > at org.apache.wicket.RequestCycle.request(RequestCycle.java:489)
> > > > > > at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:354)
> > > > > > at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:121)
> > > > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > > > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > > > > > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
> > > > > > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050)
> > > > > > at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
> > > > > > at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
> > > > > > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
> > > > > > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354)
> > > > > > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
> > > > > > at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
> > > > > > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
> > > > > > at org.mortbay.jetty.Server.handle(Server.java:269)
> > > > > > at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
> > > > > > at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687)
> > > > > > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
> > > > > > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
> > > > > > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
> > > > > > at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:208)
> > > > > > at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
> > > > > >
> > > > > > Sure enough, when I trace the wicket code and examine the data in
> > > > > > memory, the first time the dataview page is loaded, the component path
> > > > > > to the actual components are values 3 and 4.  In fact, if after I load
> > > > > > the page for the first time, I manually enter the following URLs, I
> > > > > > get the correct page without an exception:
> > > > > >
> > > > > > http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:3:actions:select::ILinkListener::
> > > > > > http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:4:actions:select::ILinkListener::
> > > > > >
> > > > > > Why would the URLs that are rendered the first time be wrong?  Is
> > > > > > there something in my code that could cause this?
> > > > > >
> > > > > > Here is a trimmed down version of the code:
> > > > > >
> > > > > >     public ReportListPanel(String id, final Service service) {
> > > > > >         super(id);
> > > > > >
> > > > > >         this.service = service;
> > > > > >
> > > > > >         ReportsDataProvider dataProvider = new ReportsDataProvider(dao);
> > > > > >         Report filter = (Report) dataProvider.getFilterState();
> > > > > >         filter.setService(service);
> > > > > >         dataProvider.setFilterState(filter);
> > > > > >
> > > > > >                 final DataView reports = new DataView("reports", dataProvider)
> > > > > >                 {
> > > > > >                         @Override
> > > > > >                         protected void populateItem(final Item item)
> > > > > >                         {
> > > > > >                         Report report = (Report) item.getModelObject();
> > > > > >                         item.setModel(new CompoundPropertyModel(report));
> > > > > >                         item.add(new ActionPanel(actions",item.getModel()));
> > > > > >                 };
> > > > > >             reports.setItemsPerPage(40);
> > > > > >             add(reports);
> > > > > >     }
> > > > > >
> > > > > >     class ActionPanel extends Panel
> > > > > >     {
> > > > > >         public ActionPanel(String id, IModel model)
> > > > > >         {
> > > > > >                 super(id, model);
> > > > > >                 setModel(model);
> > > > > >
> > > > > >                 Link link = new Link("select",model) {
> > > > > >                         @Override
> > > > > >                         public void onClick() {
> > > > > >                                         setResponsePage(new
> > > > > > ReportDetailsPage(getPage(),(Report)getModelObject(),service));;
> > > > > >                         }
> > > > > >                 };
> > > > > >                 link.add(new Label("summary"));
> > > > > >                 add(link);
> > > > > >         }
> > > > > >     }
> > > > > >
> > > > > > Any help would be appreciated!
> > > > > >
> > > > > > Thanks,
> > > > > > Tauren
> > > > > >
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > > > For additional commands, e-mail: users-help@wicket.apache.org
> > > > >
> > > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > > For additional commands, e-mail: users-help@wicket.apache.org
> > > >
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > For additional commands, e-mail: users-help@wicket.apache.org
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> >
> >
>

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


Re: Strange wicket bug in DataView?

Posted by Tauren Mills <ta...@tauren.com>.
Gwyn,

Thanks for the guidance!  The DataProvider.iterator was being executed
twice.  I put a breakpoint in iterator() and it would pause when the
page first started to load.  Then I'd continue running the code, and
the breakpoint was hit again.  At that time, the full page was
rendered except for some images on the page, and the browser was
paused loading again because of the breakpoint.  When I continued
running the code, the page would finish loading.

The images that weren't loaded are URLs stored in my DB.  I found that
when I had image URLs in the DB, everything worked fine.  But when I
had NULL entries for the images, then I'd get this exception and the
iterator would run twice.  So when the iterator would run twice, the
component hierarchy would change, causing the link URLs to no longer
be valid.

I'm still tracking it down to figure out exactly what is going on.
But you got me on the right track.  And now  I'm thinking it is more
of a problem in my application or database than in wicket itself.
Which is what I was hoping was the case anyway! :)

Tauren


On Dec 20, 2007 7:43 AM, Gwyn Evans <gw...@gmail.com> wrote:
> No real idea, but I'd be tempted to stick in some diagnostic logging
> to log the calls to the DataProvider & the details of the lists it
> returns, just to check there's nothing odd happening there...
>
> /Gwyn
>
>
> On 20/12/2007, Tauren Mills <ta...@tauren.com> wrote:
> > Thanks.  I will try to put together a quickstart, but I'm not sure I
> > can duplicate the problem in it.
> >
> > Tauren
> >
> >
> > On Dec 19, 2007 3:23 PM, Matej Knopp <ma...@gmail.com> wrote:
> > > This is definitely strange. However without posting more code (or
> > > preferably a complete testcase to reproduce) I don't really know how
> > > to help you with it.
> > >
> > > -Matej
> > >
> > >
> > > On Dec 20, 2007 12:05 AM, Tauren Mills <ta...@tauren.com> wrote:
> > > > Does anyone have any thoughts on this problem?  I realize this it may
> > > > seem unique and isolated, but are there any suggestions even on how to
> > > > figure out what is wrong?  How can I figure out why the component path
> > > > in the URLs for the Links in the DataView are not matching the
> > > > component hierarchy?  These are the URLs output at initial page
> > > > creation time:
> > > >
> > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
> > > >
> > > > However, at the time that onClick is processed, the component
> > > > hierarchy seems to have changed and now have the value of 3 and 4
> > > > instead of 1 and 2.  The links above don't work, but the following
> > > > links do if I manually enter them:
> > > >
> > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:3:actions:select::ILinkListener::
> > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:4:actions:select::ILinkListener::
> > > >
> > > > Its almost as if a secondary page render has occurred.  But I've added
> > > > logging to my page and don't see any extra log output.
> > > >
> > > > My project is basically done and ready to launch, but this is holding
> > > > it up.  Any ideas or suggestions?
> > > >
> > > > Thanks!
> > > > Tauren
> > > >
> > > >
> > > >
> > > > On Dec 18, 2007 11:21 PM, Tauren Mills <ta...@tauren.com> wrote:
> > > > > I'm having an Exception that is happening before any of my
> > > > > Link.onClick() code is executed, making me wonder if there is a wicket
> > > > > bug of some sort.
> > > > >
> > > > > I have a DataView with an ActionPanel in each row that contains a
> > > > > Link. There is no AJAX on this page.  When I load the page with the
> > > > > DataView for the first time, clicking the Link doesn't work and I get
> > > > > an Exception (see below).  But if I click the browser back button,
> > > > > then click the same link, it works.  However, this problem only occurs
> > > > > for some of the data records, not all of them.  But the same data
> > > > > records always break.  I thought it was a data problem because of
> > > > > this, but tracing back into the wicket code seems to indicate
> > > > > otherwise.  Also, I'm running on the latest wicket trunk that I
> > > > > updated to about 15 minutes ago.
> > > > >
> > > > > The URLs that are output for the Links in the dataview when the page
> > > > > is first loaded is (dataview has only 2 data records):
> > > > >
> > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
> > > > >
> > > > > When I hit the back button, the URLs for that same links are:
> > > > >
> > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:5:actions:select::ILinkListener::
> > > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:6:actions:select::ILinkListener::
> > > > >
> > > > > The exception that is thrown is this (only when the first links are
> > > > > clicked, not the links after hitting the back button):
> > > > >
> > > > > WicketMessage: component reports:reports:1:actions:select not found on
> > > > > page com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> > > > > = 6], listener interface = [RequestListenerInterface
> > > > > name=ILinkListener, method=public abstract void
> > > > > org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> > > > >
> > > > > Root cause:
> > > > >
> > > > > org.apache.wicket.WicketRuntimeException: component
> > > > > reports:reports:1:actions:select not found on page
> > > > > com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> > > > > = 6], listener interface = [RequestListenerInterface
> > > > > name=ILinkListener, method=public abstract void
> > > > > org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> > > > > at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveListenerInterfaceTarget(AbstractRequestCycleProcessor.java:411)
> > > > > at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveRenderedPage(AbstractRequestCycleProcessor.java:456)
> > > > > at org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:139)
> > > > > at org.apache.wicket.RequestCycle.step(RequestCycle.java:1152)
> > > > > at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1245)
> > > > > at org.apache.wicket.RequestCycle.request(RequestCycle.java:489)
> > > > > at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:354)
> > > > > at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:121)
> > > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > > > > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
> > > > > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050)
> > > > > at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
> > > > > at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
> > > > > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
> > > > > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354)
> > > > > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
> > > > > at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
> > > > > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
> > > > > at org.mortbay.jetty.Server.handle(Server.java:269)
> > > > > at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
> > > > > at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687)
> > > > > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
> > > > > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
> > > > > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
> > > > > at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:208)
> > > > > at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
> > > > >
> > > > > Sure enough, when I trace the wicket code and examine the data in
> > > > > memory, the first time the dataview page is loaded, the component path
> > > > > to the actual components are values 3 and 4.  In fact, if after I load
> > > > > the page for the first time, I manually enter the following URLs, I
> > > > > get the correct page without an exception:
> > > > >
> > > > > http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:3:actions:select::ILinkListener::
> > > > > http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:4:actions:select::ILinkListener::
> > > > >
> > > > > Why would the URLs that are rendered the first time be wrong?  Is
> > > > > there something in my code that could cause this?
> > > > >
> > > > > Here is a trimmed down version of the code:
> > > > >
> > > > >     public ReportListPanel(String id, final Service service) {
> > > > >         super(id);
> > > > >
> > > > >         this.service = service;
> > > > >
> > > > >         ReportsDataProvider dataProvider = new ReportsDataProvider(dao);
> > > > >         Report filter = (Report) dataProvider.getFilterState();
> > > > >         filter.setService(service);
> > > > >         dataProvider.setFilterState(filter);
> > > > >
> > > > >                 final DataView reports = new DataView("reports", dataProvider)
> > > > >                 {
> > > > >                         @Override
> > > > >                         protected void populateItem(final Item item)
> > > > >                         {
> > > > >                         Report report = (Report) item.getModelObject();
> > > > >                         item.setModel(new CompoundPropertyModel(report));
> > > > >                         item.add(new ActionPanel(actions",item.getModel()));
> > > > >                 };
> > > > >             reports.setItemsPerPage(40);
> > > > >             add(reports);
> > > > >     }
> > > > >
> > > > >     class ActionPanel extends Panel
> > > > >     {
> > > > >         public ActionPanel(String id, IModel model)
> > > > >         {
> > > > >                 super(id, model);
> > > > >                 setModel(model);
> > > > >
> > > > >                 Link link = new Link("select",model) {
> > > > >                         @Override
> > > > >                         public void onClick() {
> > > > >                                         setResponsePage(new
> > > > > ReportDetailsPage(getPage(),(Report)getModelObject(),service));;
> > > > >                         }
> > > > >                 };
> > > > >                 link.add(new Label("summary"));
> > > > >                 add(link);
> > > > >         }
> > > > >     }
> > > > >
> > > > > Any help would be appreciated!
> > > > >
> > > > > Thanks,
> > > > > Tauren
> > > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > > For additional commands, e-mail: users-help@wicket.apache.org
> > > >
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > For additional commands, e-mail: users-help@wicket.apache.org
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

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


Re: Strange wicket bug in DataView?

Posted by Gwyn Evans <gw...@gmail.com>.
No real idea, but I'd be tempted to stick in some diagnostic logging
to log the calls to the DataProvider & the details of the lists it
returns, just to check there's nothing odd happening there...

/Gwyn

On 20/12/2007, Tauren Mills <ta...@tauren.com> wrote:
> Thanks.  I will try to put together a quickstart, but I'm not sure I
> can duplicate the problem in it.
>
> Tauren
>
>
> On Dec 19, 2007 3:23 PM, Matej Knopp <ma...@gmail.com> wrote:
> > This is definitely strange. However without posting more code (or
> > preferably a complete testcase to reproduce) I don't really know how
> > to help you with it.
> >
> > -Matej
> >
> >
> > On Dec 20, 2007 12:05 AM, Tauren Mills <ta...@tauren.com> wrote:
> > > Does anyone have any thoughts on this problem?  I realize this it may
> > > seem unique and isolated, but are there any suggestions even on how to
> > > figure out what is wrong?  How can I figure out why the component path
> > > in the URLs for the Links in the DataView are not matching the
> > > component hierarchy?  These are the URLs output at initial page
> > > creation time:
> > >
> > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
> > >
> > > However, at the time that onClick is processed, the component
> > > hierarchy seems to have changed and now have the value of 3 and 4
> > > instead of 1 and 2.  The links above don't work, but the following
> > > links do if I manually enter them:
> > >
> > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:3:actions:select::ILinkListener::
> > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:4:actions:select::ILinkListener::
> > >
> > > Its almost as if a secondary page render has occurred.  But I've added
> > > logging to my page and don't see any extra log output.
> > >
> > > My project is basically done and ready to launch, but this is holding
> > > it up.  Any ideas or suggestions?
> > >
> > > Thanks!
> > > Tauren
> > >
> > >
> > >
> > > On Dec 18, 2007 11:21 PM, Tauren Mills <ta...@tauren.com> wrote:
> > > > I'm having an Exception that is happening before any of my
> > > > Link.onClick() code is executed, making me wonder if there is a wicket
> > > > bug of some sort.
> > > >
> > > > I have a DataView with an ActionPanel in each row that contains a
> > > > Link. There is no AJAX on this page.  When I load the page with the
> > > > DataView for the first time, clicking the Link doesn't work and I get
> > > > an Exception (see below).  But if I click the browser back button,
> > > > then click the same link, it works.  However, this problem only occurs
> > > > for some of the data records, not all of them.  But the same data
> > > > records always break.  I thought it was a data problem because of
> > > > this, but tracing back into the wicket code seems to indicate
> > > > otherwise.  Also, I'm running on the latest wicket trunk that I
> > > > updated to about 15 minutes ago.
> > > >
> > > > The URLs that are output for the Links in the dataview when the page
> > > > is first loaded is (dataview has only 2 data records):
> > > >
> > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
> > > >
> > > > When I hit the back button, the URLs for that same links are:
> > > >
> > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:5:actions:select::ILinkListener::
> > > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:6:actions:select::ILinkListener::
> > > >
> > > > The exception that is thrown is this (only when the first links are
> > > > clicked, not the links after hitting the back button):
> > > >
> > > > WicketMessage: component reports:reports:1:actions:select not found on
> > > > page com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> > > > = 6], listener interface = [RequestListenerInterface
> > > > name=ILinkListener, method=public abstract void
> > > > org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> > > >
> > > > Root cause:
> > > >
> > > > org.apache.wicket.WicketRuntimeException: component
> > > > reports:reports:1:actions:select not found on page
> > > > com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> > > > = 6], listener interface = [RequestListenerInterface
> > > > name=ILinkListener, method=public abstract void
> > > > org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> > > > at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveListenerInterfaceTarget(AbstractRequestCycleProcessor.java:411)
> > > > at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveRenderedPage(AbstractRequestCycleProcessor.java:456)
> > > > at org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:139)
> > > > at org.apache.wicket.RequestCycle.step(RequestCycle.java:1152)
> > > > at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1245)
> > > > at org.apache.wicket.RequestCycle.request(RequestCycle.java:489)
> > > > at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:354)
> > > > at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:121)
> > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > > > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
> > > > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050)
> > > > at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
> > > > at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
> > > > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
> > > > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354)
> > > > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
> > > > at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
> > > > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
> > > > at org.mortbay.jetty.Server.handle(Server.java:269)
> > > > at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
> > > > at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687)
> > > > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
> > > > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
> > > > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
> > > > at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:208)
> > > > at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
> > > >
> > > > Sure enough, when I trace the wicket code and examine the data in
> > > > memory, the first time the dataview page is loaded, the component path
> > > > to the actual components are values 3 and 4.  In fact, if after I load
> > > > the page for the first time, I manually enter the following URLs, I
> > > > get the correct page without an exception:
> > > >
> > > > http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:3:actions:select::ILinkListener::
> > > > http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:4:actions:select::ILinkListener::
> > > >
> > > > Why would the URLs that are rendered the first time be wrong?  Is
> > > > there something in my code that could cause this?
> > > >
> > > > Here is a trimmed down version of the code:
> > > >
> > > >     public ReportListPanel(String id, final Service service) {
> > > >         super(id);
> > > >
> > > >         this.service = service;
> > > >
> > > >         ReportsDataProvider dataProvider = new ReportsDataProvider(dao);
> > > >         Report filter = (Report) dataProvider.getFilterState();
> > > >         filter.setService(service);
> > > >         dataProvider.setFilterState(filter);
> > > >
> > > >                 final DataView reports = new DataView("reports", dataProvider)
> > > >                 {
> > > >                         @Override
> > > >                         protected void populateItem(final Item item)
> > > >                         {
> > > >                         Report report = (Report) item.getModelObject();
> > > >                         item.setModel(new CompoundPropertyModel(report));
> > > >                         item.add(new ActionPanel(actions",item.getModel()));
> > > >                 };
> > > >             reports.setItemsPerPage(40);
> > > >             add(reports);
> > > >     }
> > > >
> > > >     class ActionPanel extends Panel
> > > >     {
> > > >         public ActionPanel(String id, IModel model)
> > > >         {
> > > >                 super(id, model);
> > > >                 setModel(model);
> > > >
> > > >                 Link link = new Link("select",model) {
> > > >                         @Override
> > > >                         public void onClick() {
> > > >                                         setResponsePage(new
> > > > ReportDetailsPage(getPage(),(Report)getModelObject(),service));;
> > > >                         }
> > > >                 };
> > > >                 link.add(new Label("summary"));
> > > >                 add(link);
> > > >         }
> > > >     }
> > > >
> > > > Any help would be appreciated!
> > > >
> > > > Thanks,
> > > > Tauren
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > > For additional commands, e-mail: users-help@wicket.apache.org
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

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


Re: Strange wicket bug in DataView?

Posted by Tauren Mills <ta...@tauren.com>.
Thanks.  I will try to put together a quickstart, but I'm not sure I
can duplicate the problem in it.

Tauren


On Dec 19, 2007 3:23 PM, Matej Knopp <ma...@gmail.com> wrote:
> This is definitely strange. However without posting more code (or
> preferably a complete testcase to reproduce) I don't really know how
> to help you with it.
>
> -Matej
>
>
> On Dec 20, 2007 12:05 AM, Tauren Mills <ta...@tauren.com> wrote:
> > Does anyone have any thoughts on this problem?  I realize this it may
> > seem unique and isolated, but are there any suggestions even on how to
> > figure out what is wrong?  How can I figure out why the component path
> > in the URLs for the Links in the DataView are not matching the
> > component hierarchy?  These are the URLs output at initial page
> > creation time:
> >
> > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
> >
> > However, at the time that onClick is processed, the component
> > hierarchy seems to have changed and now have the value of 3 and 4
> > instead of 1 and 2.  The links above don't work, but the following
> > links do if I manually enter them:
> >
> > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:3:actions:select::ILinkListener::
> > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:4:actions:select::ILinkListener::
> >
> > Its almost as if a secondary page render has occurred.  But I've added
> > logging to my page and don't see any extra log output.
> >
> > My project is basically done and ready to launch, but this is holding
> > it up.  Any ideas or suggestions?
> >
> > Thanks!
> > Tauren
> >
> >
> >
> > On Dec 18, 2007 11:21 PM, Tauren Mills <ta...@tauren.com> wrote:
> > > I'm having an Exception that is happening before any of my
> > > Link.onClick() code is executed, making me wonder if there is a wicket
> > > bug of some sort.
> > >
> > > I have a DataView with an ActionPanel in each row that contains a
> > > Link. There is no AJAX on this page.  When I load the page with the
> > > DataView for the first time, clicking the Link doesn't work and I get
> > > an Exception (see below).  But if I click the browser back button,
> > > then click the same link, it works.  However, this problem only occurs
> > > for some of the data records, not all of them.  But the same data
> > > records always break.  I thought it was a data problem because of
> > > this, but tracing back into the wicket code seems to indicate
> > > otherwise.  Also, I'm running on the latest wicket trunk that I
> > > updated to about 15 minutes ago.
> > >
> > > The URLs that are output for the Links in the dataview when the page
> > > is first loaded is (dataview has only 2 data records):
> > >
> > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
> > >
> > > When I hit the back button, the URLs for that same links are:
> > >
> > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:5:actions:select::ILinkListener::
> > > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:6:actions:select::ILinkListener::
> > >
> > > The exception that is thrown is this (only when the first links are
> > > clicked, not the links after hitting the back button):
> > >
> > > WicketMessage: component reports:reports:1:actions:select not found on
> > > page com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> > > = 6], listener interface = [RequestListenerInterface
> > > name=ILinkListener, method=public abstract void
> > > org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> > >
> > > Root cause:
> > >
> > > org.apache.wicket.WicketRuntimeException: component
> > > reports:reports:1:actions:select not found on page
> > > com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> > > = 6], listener interface = [RequestListenerInterface
> > > name=ILinkListener, method=public abstract void
> > > org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> > > at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveListenerInterfaceTarget(AbstractRequestCycleProcessor.java:411)
> > > at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveRenderedPage(AbstractRequestCycleProcessor.java:456)
> > > at org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:139)
> > > at org.apache.wicket.RequestCycle.step(RequestCycle.java:1152)
> > > at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1245)
> > > at org.apache.wicket.RequestCycle.request(RequestCycle.java:489)
> > > at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:354)
> > > at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:121)
> > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
> > > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050)
> > > at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
> > > at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
> > > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
> > > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354)
> > > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
> > > at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
> > > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
> > > at org.mortbay.jetty.Server.handle(Server.java:269)
> > > at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
> > > at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687)
> > > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
> > > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
> > > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
> > > at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:208)
> > > at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
> > >
> > > Sure enough, when I trace the wicket code and examine the data in
> > > memory, the first time the dataview page is loaded, the component path
> > > to the actual components are values 3 and 4.  In fact, if after I load
> > > the page for the first time, I manually enter the following URLs, I
> > > get the correct page without an exception:
> > >
> > > http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:3:actions:select::ILinkListener::
> > > http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:4:actions:select::ILinkListener::
> > >
> > > Why would the URLs that are rendered the first time be wrong?  Is
> > > there something in my code that could cause this?
> > >
> > > Here is a trimmed down version of the code:
> > >
> > >     public ReportListPanel(String id, final Service service) {
> > >         super(id);
> > >
> > >         this.service = service;
> > >
> > >         ReportsDataProvider dataProvider = new ReportsDataProvider(dao);
> > >         Report filter = (Report) dataProvider.getFilterState();
> > >         filter.setService(service);
> > >         dataProvider.setFilterState(filter);
> > >
> > >                 final DataView reports = new DataView("reports", dataProvider)
> > >                 {
> > >                         @Override
> > >                         protected void populateItem(final Item item)
> > >                         {
> > >                         Report report = (Report) item.getModelObject();
> > >                         item.setModel(new CompoundPropertyModel(report));
> > >                         item.add(new ActionPanel(actions",item.getModel()));
> > >                 };
> > >             reports.setItemsPerPage(40);
> > >             add(reports);
> > >     }
> > >
> > >     class ActionPanel extends Panel
> > >     {
> > >         public ActionPanel(String id, IModel model)
> > >         {
> > >                 super(id, model);
> > >                 setModel(model);
> > >
> > >                 Link link = new Link("select",model) {
> > >                         @Override
> > >                         public void onClick() {
> > >                                         setResponsePage(new
> > > ReportDetailsPage(getPage(),(Report)getModelObject(),service));;
> > >                         }
> > >                 };
> > >                 link.add(new Label("summary"));
> > >                 add(link);
> > >         }
> > >     }
> > >
> > > Any help would be appreciated!
> > >
> > > Thanks,
> > > Tauren
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> > For additional commands, e-mail: users-help@wicket.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

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


Re: Strange wicket bug in DataView?

Posted by Matej Knopp <ma...@gmail.com>.
This is definitely strange. However without posting more code (or
preferably a complete testcase to reproduce) I don't really know how
to help you with it.

-Matej

On Dec 20, 2007 12:05 AM, Tauren Mills <ta...@tauren.com> wrote:
> Does anyone have any thoughts on this problem?  I realize this it may
> seem unique and isolated, but are there any suggestions even on how to
> figure out what is wrong?  How can I figure out why the component path
> in the URLs for the Links in the DataView are not matching the
> component hierarchy?  These are the URLs output at initial page
> creation time:
>
> http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
>
> However, at the time that onClick is processed, the component
> hierarchy seems to have changed and now have the value of 3 and 4
> instead of 1 and 2.  The links above don't work, but the following
> links do if I manually enter them:
>
> http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:3:actions:select::ILinkListener::
> http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:4:actions:select::ILinkListener::
>
> Its almost as if a secondary page render has occurred.  But I've added
> logging to my page and don't see any extra log output.
>
> My project is basically done and ready to launch, but this is holding
> it up.  Any ideas or suggestions?
>
> Thanks!
> Tauren
>
>
>
> On Dec 18, 2007 11:21 PM, Tauren Mills <ta...@tauren.com> wrote:
> > I'm having an Exception that is happening before any of my
> > Link.onClick() code is executed, making me wonder if there is a wicket
> > bug of some sort.
> >
> > I have a DataView with an ActionPanel in each row that contains a
> > Link. There is no AJAX on this page.  When I load the page with the
> > DataView for the first time, clicking the Link doesn't work and I get
> > an Exception (see below).  But if I click the browser back button,
> > then click the same link, it works.  However, this problem only occurs
> > for some of the data records, not all of them.  But the same data
> > records always break.  I thought it was a data problem because of
> > this, but tracing back into the wicket code seems to indicate
> > otherwise.  Also, I'm running on the latest wicket trunk that I
> > updated to about 15 minutes ago.
> >
> > The URLs that are output for the Links in the dataview when the page
> > is first loaded is (dataview has only 2 data records):
> >
> > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
> >
> > When I hit the back button, the URLs for that same links are:
> >
> > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:5:actions:select::ILinkListener::
> > http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:6:actions:select::ILinkListener::
> >
> > The exception that is thrown is this (only when the first links are
> > clicked, not the links after hitting the back button):
> >
> > WicketMessage: component reports:reports:1:actions:select not found on
> > page com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> > = 6], listener interface = [RequestListenerInterface
> > name=ILinkListener, method=public abstract void
> > org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> >
> > Root cause:
> >
> > org.apache.wicket.WicketRuntimeException: component
> > reports:reports:1:actions:select not found on page
> > com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> > = 6], listener interface = [RequestListenerInterface
> > name=ILinkListener, method=public abstract void
> > org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> > at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveListenerInterfaceTarget(AbstractRequestCycleProcessor.java:411)
> > at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveRenderedPage(AbstractRequestCycleProcessor.java:456)
> > at org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:139)
> > at org.apache.wicket.RequestCycle.step(RequestCycle.java:1152)
> > at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1245)
> > at org.apache.wicket.RequestCycle.request(RequestCycle.java:489)
> > at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:354)
> > at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:121)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
> > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050)
> > at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
> > at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
> > at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
> > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354)
> > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
> > at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
> > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
> > at org.mortbay.jetty.Server.handle(Server.java:269)
> > at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
> > at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687)
> > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
> > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
> > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
> > at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:208)
> > at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
> >
> > Sure enough, when I trace the wicket code and examine the data in
> > memory, the first time the dataview page is loaded, the component path
> > to the actual components are values 3 and 4.  In fact, if after I load
> > the page for the first time, I manually enter the following URLs, I
> > get the correct page without an exception:
> >
> > http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:3:actions:select::ILinkListener::
> > http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:4:actions:select::ILinkListener::
> >
> > Why would the URLs that are rendered the first time be wrong?  Is
> > there something in my code that could cause this?
> >
> > Here is a trimmed down version of the code:
> >
> >     public ReportListPanel(String id, final Service service) {
> >         super(id);
> >
> >         this.service = service;
> >
> >         ReportsDataProvider dataProvider = new ReportsDataProvider(dao);
> >         Report filter = (Report) dataProvider.getFilterState();
> >         filter.setService(service);
> >         dataProvider.setFilterState(filter);
> >
> >                 final DataView reports = new DataView("reports", dataProvider)
> >                 {
> >                         @Override
> >                         protected void populateItem(final Item item)
> >                         {
> >                         Report report = (Report) item.getModelObject();
> >                         item.setModel(new CompoundPropertyModel(report));
> >                         item.add(new ActionPanel(actions",item.getModel()));
> >                 };
> >             reports.setItemsPerPage(40);
> >             add(reports);
> >     }
> >
> >     class ActionPanel extends Panel
> >     {
> >         public ActionPanel(String id, IModel model)
> >         {
> >                 super(id, model);
> >                 setModel(model);
> >
> >                 Link link = new Link("select",model) {
> >                         @Override
> >                         public void onClick() {
> >                                         setResponsePage(new
> > ReportDetailsPage(getPage(),(Report)getModelObject(),service));;
> >                         }
> >                 };
> >                 link.add(new Label("summary"));
> >                 add(link);
> >         }
> >     }
> >
> > Any help would be appreciated!
> >
> > Thanks,
> > Tauren
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

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


Re: Strange wicket bug in DataView?

Posted by Tauren Mills <ta...@tauren.com>.
Does anyone have any thoughts on this problem?  I realize this it may
seem unique and isolated, but are there any suggestions even on how to
figure out what is wrong?  How can I figure out why the component path
in the URLs for the Links in the DataView are not matching the
component hierarchy?  These are the URLs output at initial page
creation time:

http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::

However, at the time that onClick is processed, the component
hierarchy seems to have changed and now have the value of 3 and 4
instead of 1 and 2.  The links above don't work, but the following
links do if I manually enter them:

http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:3:actions:select::ILinkListener::
http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:4:actions:select::ILinkListener::

Its almost as if a secondary page render has occurred.  But I've added
logging to my page and don't see any extra log output.

My project is basically done and ready to launch, but this is holding
it up.  Any ideas or suggestions?

Thanks!
Tauren


On Dec 18, 2007 11:21 PM, Tauren Mills <ta...@tauren.com> wrote:
> I'm having an Exception that is happening before any of my
> Link.onClick() code is executed, making me wonder if there is a wicket
> bug of some sort.
>
> I have a DataView with an ActionPanel in each row that contains a
> Link. There is no AJAX on this page.  When I load the page with the
> DataView for the first time, clicking the Link doesn't work and I get
> an Exception (see below).  But if I click the browser back button,
> then click the same link, it works.  However, this problem only occurs
> for some of the data records, not all of them.  But the same data
> records always break.  I thought it was a data problem because of
> this, but tracing back into the wicket code seems to indicate
> otherwise.  Also, I'm running on the latest wicket trunk that I
> updated to about 15 minutes ago.
>
> The URLs that are output for the Links in the dataview when the page
> is first loaded is (dataview has only 2 data records):
>
> http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:1:actions:select::ILinkListener::
> http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:2:actions:select::ILinkListener::
>
> When I hit the back button, the URLs for that same links are:
>
> http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:5:actions:select::ILinkListener::
> http://localhost:8082/db/app/?wicket:interface=:6:reports:reports:6:actions:select::ILinkListener::
>
> The exception that is thrown is this (only when the first links are
> clicked, not the links after hitting the back button):
>
> WicketMessage: component reports:reports:1:actions:select not found on
> page com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> = 6], listener interface = [RequestListenerInterface
> name=ILinkListener, method=public abstract void
> org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
>
> Root cause:
>
> org.apache.wicket.WicketRuntimeException: component
> reports:reports:1:actions:select not found on page
> com.theseniorlist.database.web.page.site.service.ServiceDetailsPage[id
> = 6], listener interface = [RequestListenerInterface
> name=ILinkListener, method=public abstract void
> org.apache.wicket.markup.html.link.ILinkListener.onLinkClicked()]
> at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveListenerInterfaceTarget(AbstractRequestCycleProcessor.java:411)
> at org.apache.wicket.request.AbstractRequestCycleProcessor.resolveRenderedPage(AbstractRequestCycleProcessor.java:456)
> at org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:139)
> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1152)
> at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1245)
> at org.apache.wicket.RequestCycle.request(RequestCycle.java:489)
> at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:354)
> at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:121)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
> at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050)
> at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
> at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
> at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
> at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354)
> at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
> at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
> at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
> at org.mortbay.jetty.Server.handle(Server.java:269)
> at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
> at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687)
> at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
> at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
> at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:208)
> at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
>
> Sure enough, when I trace the wicket code and examine the data in
> memory, the first time the dataview page is loaded, the component path
> to the actual components are values 3 and 4.  In fact, if after I load
> the page for the first time, I manually enter the following URLs, I
> get the correct page without an exception:
>
> http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:3:actions:select::ILinkListener::
> http://localhost:8082/db/app/?wicket:interface=:8:reports:reports:4:actions:select::ILinkListener::
>
> Why would the URLs that are rendered the first time be wrong?  Is
> there something in my code that could cause this?
>
> Here is a trimmed down version of the code:
>
>     public ReportListPanel(String id, final Service service) {
>         super(id);
>
>         this.service = service;
>
>         ReportsDataProvider dataProvider = new ReportsDataProvider(dao);
>         Report filter = (Report) dataProvider.getFilterState();
>         filter.setService(service);
>         dataProvider.setFilterState(filter);
>
>                 final DataView reports = new DataView("reports", dataProvider)
>                 {
>                         @Override
>                         protected void populateItem(final Item item)
>                         {
>                         Report report = (Report) item.getModelObject();
>                         item.setModel(new CompoundPropertyModel(report));
>                         item.add(new ActionPanel(actions",item.getModel()));
>                 };
>             reports.setItemsPerPage(40);
>             add(reports);
>     }
>
>     class ActionPanel extends Panel
>     {
>         public ActionPanel(String id, IModel model)
>         {
>                 super(id, model);
>                 setModel(model);
>
>                 Link link = new Link("select",model) {
>                         @Override
>                         public void onClick() {
>                                         setResponsePage(new
> ReportDetailsPage(getPage(),(Report)getModelObject(),service));;
>                         }
>                 };
>                 link.add(new Label("summary"));
>                 add(link);
>         }
>     }
>
> Any help would be appreciated!
>
> Thanks,
> Tauren
>

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