Hello,
I have the same issue which is discussed in the following link:
http://apache-wicket.1842946.n4.nabble.com/WicketRuntimeException-component-not-found-on-page-td3055902.html
I made a quickstart to reproduce it. Any idea on how to workaround
this behavior?
I'm using wicket 1.4.12, wiquery 1.1.2, and wiquery-plugin for tooltip
(other-plugins-1.1.jar).
Thanks,
Takeo Hosomi
Step1.
Use following source code to reproduce the problem.
Java:
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
import org.apache.wicket.behavior.SimpleAttributeModifier;
import org.apache.wicket.markup.html.CSSPackageResource;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.PageableListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.odlabs.wiquery.ui.themes.ThemeUiHelper;
import org.odlabs.wiquery.ui.themes.UiIcon;
import org.wiquery.plugin.jquertytools.tooltip.TooltipAjaxBehaviour;
import org.wiquery.plugin.jquertytools.tooltip.TooltipBehavior;
import
org.wiquery.plugin.jquertytools.tooltip.TooltipAjaxBehaviour.IToolTipOnBeforeShowUIEventHandler;
import org.wiquery.plugin.jquertytools.tooltip.TooltipBehavior.Offset;
import org.wiquery.plugin.jquertytools.tooltip.TooltipBehavior.Position;
public class TestPanel extends Panel {
private static final long serialVersionUID = 1L;
private static int rowHeight = 40;
public TestPanel(String id) {
super(id);
setOutputMarkupId(true);
add(CSSPackageResource.getHeaderContribution(TooltipBehavior.CSS));
// Tooltip Indicator
final WebMarkupContainer indiIcon = new WebMarkupContainer("indiIcon");
ThemeUiHelper.iconComponent(indiIcon, UiIcon.CARAT_1_EAST);
final WebMarkupContainer tooltipIndicator = new
WebMarkupContainer("indi");
tooltipIndicator.add(indiIcon);
tooltipIndicator.add(new SimpleAttributeModifier("style",
"display:none;background-color:#C4C4C4;" +
"height:"+20+"px;" +
"padding-top:"+((rowHeight-20)/2-1)+"px;padding-bottom:"+((rowHeight-20)/2-1)+"px;"));
tooltipIndicator.setOutputMarkupId(true);
add(tooltipIndicator);
// Container
WebMarkupContainer container = new WebMarkupContainer("container");
container.setOutputMarkupId(true);
add(container);
PageableListView<DummyUser> users = new
PageableListView<DummyUser>("user", dummyUsers(), 3){
/***/
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<DummyUser> item) {
item.add(new
SimpleAttributeModifier("style","height:"+rowHeight+"px;"));
item.add(new Label("name",
item.getModelObject().getName()));
item.add(new Label("first",
item.getModelObject().getFirst()));
item.add(new Label("last",
item.getModelObject().getLast()));
item.add(new TooltipAjaxBehaviour()
.setDelay(0) // TODO magic number 400ms
.setPredelay(0)
.setPosition(Position.bottom_right)
.setOffset(new Offset(-(rowHeight-1),-15)) //
y,x
.setTip(tooltipIndicator)
.setOnBeforeShow(new
IToolTipOnBeforeShowUIEventHandler() {
private static final long
serialVersionUID = 1L;
public void onEvent(AjaxRequestTarget
target, Component
component, int top, int left) {
// do something...
}
})
);
}
};
container.add(users);
container.add(new AjaxPagingNavigator("navigator", users));
}
private List<DummyUser> dummyUsers() {
List<DummyUser> ret = new ArrayList<DummyUser>();
for (int i=0; i<10 ; i++){
ret.add(new DummyUser("name"+i,"first"+i,"last"+i));
}
return ret;
}
private class DummyUser implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private String first;
private String last;
public DummyUser(String name, String first, String last){
this.name = name;
this.first = first;
this.last = last;
}
public String getName() {
return name;
}
public String getFirst() {
return first;
}
public String getLast() {
return last;
}
}
}
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml";
xmlns:wicket="http://svn.apache.org/repos/asf/wicket/trunk/wicket/wicket-xhtml1-strict.dtd";>
<wicket:panel>
<br/>
<div wicket:id="container">
<table>
<tr>
<th>User Name</th>
<td>First Name</td>
<td>Last Name</td>
</tr>
<tr wicket:id="user">
<th wicket:id="name">g1</th>
<td wicket:id="first">g1</td>
<td wicket:id="last">g1</td>
</tr>
</table>
<div wicket:id="navigator"></div>
</div>
<div wicket:id="indi">
<div wicket:id="indiIcon"></div>
</div>
</wicket:panel>
</html>
Step2.
When clicking the paging navigator, quickly move the mouse to the
table region. Then sometimes following error messages are shown:
ERROR - RequestCycle -
org.apache.wicket.WicketRuntimeException: component
tabs:container:user:2 not found on page gvc.web.webpages.TestPage[id =
4], listener interface = [RequestListenerInterface
name=IActivePageBehaviorListener, method=public abstract void
org.apache.wicket.behavior.IBehaviorListener.onRequest()]
org.apache.wicket.protocol.http.request.InvalidUrlException:
org.apache.wicket.WicketRuntimeException: component
tabs:container:user:2 not found on page gvc.web.webpages.TestPage[id =
4], listener interface = [RequestListenerInterface
name=IActivePageBehaviorListener, method=public abstract void
org.apache.wicket.behavior.IBehaviorListener.onRequest()]
at
org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:262)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1310)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1436)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
at
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:484)
at
org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:138)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:527)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1216)
at
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1187)
at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:421)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:493)
at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:225)
at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:930)
at
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:358)
at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:866)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:245)
at
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)
at org.eclipse.jetty.server.Server.handle(Server.java:351)
at
org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:594)
at
org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:1041)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:549)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:211)
at
org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:424)
at
org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:489)
at
org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.wicket.WicketRuntimeException: component
tabs:container:user:2 not found on page gvc.web.webpages.TestPage[id =
4], listener interface = [RequestListenerInterface
name=IActivePageBehaviorListener, method=public abstract void
org.apache.wicket.behavior.IBehaviorListener.onRequest()]
at
org.apache.wicket.request.AbstractRequestCycleProcessor.resolveListenerInterfaceTarget(AbstractRequestCycleProcessor.java:426)
at
org.apache.wicket.request.AbstractRequestCycleProcessor.resolveRenderedPage(AbstractRequestCycleProcessor.java:471)
at
org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:144)
... 33 more
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]