Can anyone explain to me why this does not work with
AjaxFallbackDefaultDataTable, but does with DefaultDataTable.
Does anyone know of a solution for this problem?

On Mon, Jun 28, 2010 at 6:18 PM, Nelson Segura <nsegu...@gmail.com> wrote:

> Since AjaxLink is AJAX and not a proper link, then it does behave as a
> normal link, i.e. middle click (open link in new tab or new window) does not
> trigger the AJAX click even, which means you cannot chose to open the link
> in a new page.
>
> back to square one, except that know I know is a problem with
> AjaxFallbackDefaultDataTable, not with DataTable.
>
>
> -Nelson
>
>
> On Mon, Jun 28, 2010 at 5:47 PM, Nelson Segura <nsegu...@gmail.com> wrote:
>
>> 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
>>>
>>
>>
>

Reply via email to