Hi all,

I upgraded my application from M8 to M9 yesterday and encountered 3 issues:

1. Current WiQuery version is not compatible with M9

It still depends on WicketEventJQueryResourceReference. It would be great
if someone could cut a milestone release for WiQuery as well, so I can do
further testing with my application.

2. Failing tests for components with AjaxLazyLoadPanel

It seems that it is not possible anymore, to load an AjaxLazyLoadPanel
during an Ajax request. I have a panel that is initially invisible and
shown via an Ajax toggle link that contains a AjaxLazyLoadPanel. My test
fails with:

java.lang.IllegalStateException: Components can no  longer be added
> at
> org.apache.wicket.page.PartialPageUpdate.assertNotFrozen(PartialPageUpdate.java:854)
> at
> org.apache.wicket.page.PartialPageUpdate.assertComponentsNotFrozen(PartialPageUpdate.java:847)
> at org.apache.wicket.page.PartialPageUpdate.add(PartialPageUpdate.java:444)
> at
> org.apache.wicket.ajax.AjaxRequestHandler.add(AjaxRequestHandler.java:263)
> at
> org.apache.wicket.ajax.AjaxRequestHandler.add(AjaxRequestHandler.java:239)
> at
> org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel.lambda$isLoaded$1(AjaxLazyLoadPanel.java:258)
> at java.util.Optional.ifPresent(Optional.java:159)
> at
> org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel.isLoaded(AjaxLazyLoadPanel.java:258)
> at
> org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel.onConfigure(AjaxLazyLoadPanel.java:212)


The toggle link sets the panel containing the lazy-load panel visible and
adds it to the ajax target:

public void onClick(AjaxRequestTarget target) {
> component.setVisible(!component.isVisible());
> target.add(component);
> }


3. Removed (internal) APIs

I have a custom component for rendering an infinite-scrolling list that
uses two (internal) methods to update the underlying DataView:

public void onClick(AjaxRequestTarget target) {
>     pageable.setItemsPerPage(pageable.getItemsPerPage() +
> additionalItems);

    view.prepareForRender();
>     view.afterRender();

}


Both `prepareForRender` and `afterRender` are no longer accessible. Does
anyone have a suggestion what I could call instead? I sadly do not remember
why exactly we work against Wicket's default rendering in that case but it
looks like we want to do everything *except* the actual render.

Best regards,

Thomas

Reply via email to