Jeremy, the code is below. I did notice something while researching/testing more. The LinkPanel solution DOES work for a DataTable. The problem starts when changed to a AjaxFallbackDefaultDataTable. I did testing based in the datatable example in the wicket examples. Maybe using an AjaxLink instead of a normal link in the table is the right answer.
Code is mostly taken from the page linked in the original email public abstract class LinkPanel<T> extends Panel { private static final long serialVersionUID = 2062173455224348354L; public LinkPanel(final Item<?> item, final String componentId, final IModel<T> model, final String property) { super(componentId, model); AjaxLink<T> link = new AjaxLink<T>("linkCell") { private static final long serialVersionUID = 2574434147588617330L; @Override public void onClick(AjaxRequestTarget target) { LinkPanel.this.onClick(); } }; add(link); link.add(new Label("label", new PropertyModel(model,property))); } protected abstract void onClick(); } ----------------- Usage --------------- public class LinkPanelPage extends WebPage { public LinkPanelPage() { Form form = new Form("form"); final LinkPanelListProvider provider = new LinkPanelListProvider(); List<IColumn> columnList = new ArrayList<IColumn>(3); //columnList.add(new PropertyColumn(new Model("eMailAddress"),"eMailAddress")); columnList.add(new AbstractColumn(new Model("eMailAddress"), "eMailAddress") { private static final long serialVersionUID = -1822504503325964706L; @Override @SuppressWarnings("unchecked") public void populateItem(Item cellItem, String componentId, final IModel rowModel) { cellItem.add(new LinkPanel(cellItem, componentId, rowModel, getSortProperty()) { private static final long serialVersionUID = -4615958634366803506L; @Override protected void onClick() { System.out.println("clicked on link"); } }); } }); columnList.add(new PropertyColumn(new Model("firstName"),"firstName")); columnList.add(new PropertyColumn(new Model("lastName"),"lastName")); AjaxFallbackDefaultDataTable table = new AjaxFallbackDefaultDataTable("link-panel-table", columnList, provider, 3); form.add(table); add(form); } } -Nelson On Mon, Jun 28, 2010 at 5:14 PM, Jeremy Thomerson <jer...@wickettraining.com > wrote: > please show some code > > On Mon, Jun 28, 2010 at 6:39 PM, Nelson Segura <nsegu...@gmail.com> wrote: > > > I am trying to create a table based on DataTable, in which one of the > > columns has links on it. > > I tried to use the strategy described here (LinkPanel): > > > > https://cwiki.apache.org/WICKET/adding-links-in-a-defaultdatatable.html > > > > But this has a problem: clicking in the links in succession soon causes > > "component not found exceptions", or opening the link in a new window or > > tab > > renders the current page unusable, with the same exception. > > > > rg.apache.wicket.WicketRuntimeException: component ..... not found on > page > > ... > > 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) > > at org.apache.wicket.RequestCycle.step(RequestCycle.java:1310) > > ... > > > > I believe this is due to the fact that a new LinkPanel is created when > > rendering each column cell, and that when the click happens, the current > > LinkPanels are replaced by new ones, and so the original page is not > usable > > anymore, because it is referring to the original LinkPanels. > > > > Our users make heavy use of opening links in a list in new pages or tabs, > > so > > this is a big deal for us :( > > > > Is there any solution for this problem? The only one I can think of is to > > use AjaxLink instead, but I am not sure whether that is correct, or if it > > could cause even more problems. > > > > Any help? > > > > -Nelson > > > > > > -- > Jeremy Thomerson > http://www.wickettraining.com >