You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Tobias Gierke <to...@code-sourcery.de> on 2018/05/25 08:44:17 UTC

AJAX & IllegalStateException: Components can no longer be added

Hi,

Can someone please explain to me what's causing this exception (see end 
of this mail) when trying to add a component to an ART ?

In 
http://apache-wicket.1842946.n4.nabble.com/Components-can-no-longer-be-added-td4662838.html 
Sven Meier said

> once rendering of components via Ajax has started, you cannot update
> components. 
but as can be seen from the stacktrace I'm still in the beforeRender() 
phase ... or is anything inside the beforeRender() code path already 
considered to be part of the rendering phase ?

Thanks,
Tobias

----------------------------------------

  java.lang.IllegalStateException: Components can no  longer be added
     at 
org.apache.wicket.page.PartialPageUpdate.assertNotFrozen(PartialPageUpdate.java:858) 
~[wicket-core-8.0.0.jar:8.0.0]
     at 
org.apache.wicket.page.PartialPageUpdate.assertComponentsNotFrozen(PartialPageUpdate.java:851) 
~[wicket-core-8.0.0.jar:8.0.0]
     at 
org.apache.wicket.page.PartialPageUpdate.add(PartialPageUpdate.java:448) 
~[wicket-core-8.0.0.jar:8.0.0]
     at 
org.apache.wicket.ajax.AjaxRequestHandler.add(AjaxRequestHandler.java:263) 
~[wicket-core-8.0.0.jar:8.0.0]
     at 
org.apache.wicket.ajax.AjaxRequestHandler.add(AjaxRequestHandler.java:239) 
~[wicket-core-8.0.0.jar:8.0.0]
     at 
com.vodecc.voipmng.boundary.wicket.xdrsearch.XDRListPanel$1.lambda$0(XDRListPanel.java:73) 
~[classes/:?]
     at 
com.vodecc.voipmng.boundary.wicket.behaviors.AjaxTooltipManager.doOnAjaxRequest(AjaxTooltipManager.java:411) 
~[classes/:?]
     at 
com.vodecc.voipmng.boundary.wicket.xdrsearch.XDRListPanel$1.queryFinished(XDRListPanel.java:73) 
~[classes/:?]
     at 
com.vodecc.voipmng.boundary.wicket.streamsearch.AbstractSearchResultsDataProvider.invokeCallbacks(AbstractSearchResultsDataProvider.java:241) 
[classes/:?]
     at 
com.vodecc.voipmng.boundary.wicket.streamsearch.AbstractSearchResultsDataProvider.getSearchResults(AbstractSearchResultsDataProvider.java:230) 
[classes/:?]
     at 
com.vodecc.voipmng.boundary.wicket.streamsearch.AbstractSearchResultsDataProvider.getSearchResults(AbstractSearchResultsDataProvider.java:252) 
[classes/:?]
     at 
com.vodecc.voipmng.boundary.wicket.xdrsearch.XDRDataTable.onConfigure(XDRDataTable.java:436) 
[classes/:?]
     at org.apache.wicket.Component.configure(Component.java:984) 
[wicket-core-8.0.0.jar:8.0.0]
     at org.apache.wicket.Component.beforeRender(Component.java:926) 
[wicket-core-8.0.0.jar:8.0.0]
     at 
org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753) 
[wicket-core-8.0.0.jar:8.0.0]
     at org.apache.wicket.Component.onBeforeRender(Component.java:3796) 
[wicket-core-8.0.0.jar:8.0.0]
     at org.apache.wicket.Component.beforeRender(Component.java:937) 
[wicket-core-8.0.0.jar:8.0.0]
     at 
org.apache.wicket.page.PartialPageUpdate.prepareComponent(PartialPageUpdate.java:322) 
[wicket-core-8.0.0.jar:8.0.0]
     at 
org.apache.wicket.page.PartialPageUpdate.writeComponents(PartialPageUpdate.java:250) 
[wicket-core-8.0.0.jar:8.0.0]
     at 
org.apache.wicket.page.PartialPageUpdate.writeTo(PartialPageUpdate.java:162) 
[wicket-core-8.0.0.jar:8.0.0]
     at 
org.apache.wicket.ajax.AjaxRequestHandler.respond(AjaxRequestHandler.java:383) 
[wicket-core-8.0.0.jar:8.0.0]
     at 
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:912) 
[wicket-core-8.0.0.jar:8.0.0]
     at 
org.apache.wicket.request.RequestHandlerExecutor.execute(RequestHandlerExecutor.java:65) 
[wicket-request-8.0.0.jar:8.0.0]
     at 
org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:283) 
[wicket-core-8.0.0.jar:8.0.0]
     at 
org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:253) 
[wicket-core-8.0.0.jar:8.0.0]
     at 
org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:221) 
[wicket-core-8.0.0.jar:8.0.0]


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


Re: AJAX & IllegalStateException: Components can no longer be added

Posted by Tobias Gierke <to...@code-sourcery.de>.
Hi Sven,
> Hi,
>
> actually it is even more strict:
>
> Once the ART has started generating the response - including 
> preparation of components - you can now longer add other components.
>
> This hasn't changed from 7.x to 8.x
>
> We were discussing on lifting this restriction, but this would come 
> with some difficulties: what if a component in beforeRender() adds one 
> of its ancestors to be updated?
Thanks for the clarification!

Cheers,
Tobias
>
> Have fun
> Sven
>
>
> Am 25.05.2018 um 10:44 schrieb Tobias Gierke:
>> Hi,
>>
>> Can someone please explain to me what's causing this exception (see 
>> end of this mail) when trying to add a component to an ART ?
>>
>> In 
>> http://apache-wicket.1842946.n4.nabble.com/Components-can-no-longer-be-added-td4662838.html 
>> Sven Meier said
>>
>>> once rendering of components via Ajax has started, you cannot update
>>> components. 
>> but as can be seen from the stacktrace I'm still in the 
>> beforeRender() phase ... or is anything inside the beforeRender() 
>> code path already considered to be part of the rendering phase ?
>>
>> Thanks,
>> Tobias
>>
>> ----------------------------------------
>>
>>  java.lang.IllegalStateException: Components can no  longer be added
>>     at 
>> org.apache.wicket.page.PartialPageUpdate.assertNotFrozen(PartialPageUpdate.java:858) 
>> ~[wicket-core-8.0.0.jar:8.0.0]
>>     at 
>> org.apache.wicket.page.PartialPageUpdate.assertComponentsNotFrozen(PartialPageUpdate.java:851) 
>> ~[wicket-core-8.0.0.jar:8.0.0]
>>     at 
>> org.apache.wicket.page.PartialPageUpdate.add(PartialPageUpdate.java:448) 
>> ~[wicket-core-8.0.0.jar:8.0.0]
>>     at 
>> org.apache.wicket.ajax.AjaxRequestHandler.add(AjaxRequestHandler.java:263) 
>> ~[wicket-core-8.0.0.jar:8.0.0]
>>     at 
>> org.apache.wicket.ajax.AjaxRequestHandler.add(AjaxRequestHandler.java:239) 
>> ~[wicket-core-8.0.0.jar:8.0.0]
>>     at 
>> com.vodecc.voipmng.boundary.wicket.xdrsearch.XDRListPanel$1.lambda$0(XDRListPanel.java:73) 
>> ~[classes/:?]
>>     at 
>> com.vodecc.voipmng.boundary.wicket.behaviors.AjaxTooltipManager.doOnAjaxRequest(AjaxTooltipManager.java:411) 
>> ~[classes/:?]
>>     at 
>> com.vodecc.voipmng.boundary.wicket.xdrsearch.XDRListPanel$1.queryFinished(XDRListPanel.java:73) 
>> ~[classes/:?]
>>     at 
>> com.vodecc.voipmng.boundary.wicket.streamsearch.AbstractSearchResultsDataProvider.invokeCallbacks(AbstractSearchResultsDataProvider.java:241) 
>> [classes/:?]
>>     at 
>> com.vodecc.voipmng.boundary.wicket.streamsearch.AbstractSearchResultsDataProvider.getSearchResults(AbstractSearchResultsDataProvider.java:230) 
>> [classes/:?]
>>     at 
>> com.vodecc.voipmng.boundary.wicket.streamsearch.AbstractSearchResultsDataProvider.getSearchResults(AbstractSearchResultsDataProvider.java:252) 
>> [classes/:?]
>>     at 
>> com.vodecc.voipmng.boundary.wicket.xdrsearch.XDRDataTable.onConfigure(XDRDataTable.java:436) 
>> [classes/:?]
>>     at org.apache.wicket.Component.configure(Component.java:984) 
>> [wicket-core-8.0.0.jar:8.0.0]
>>     at org.apache.wicket.Component.beforeRender(Component.java:926) 
>> [wicket-core-8.0.0.jar:8.0.0]
>>     at 
>> org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753) 
>> [wicket-core-8.0.0.jar:8.0.0]
>>     at 
>> org.apache.wicket.Component.onBeforeRender(Component.java:3796) 
>> [wicket-core-8.0.0.jar:8.0.0]
>>     at org.apache.wicket.Component.beforeRender(Component.java:937) 
>> [wicket-core-8.0.0.jar:8.0.0]
>>     at 
>> org.apache.wicket.page.PartialPageUpdate.prepareComponent(PartialPageUpdate.java:322) 
>> [wicket-core-8.0.0.jar:8.0.0]
>>     at 
>> org.apache.wicket.page.PartialPageUpdate.writeComponents(PartialPageUpdate.java:250) 
>> [wicket-core-8.0.0.jar:8.0.0]
>>     at 
>> org.apache.wicket.page.PartialPageUpdate.writeTo(PartialPageUpdate.java:162) 
>> [wicket-core-8.0.0.jar:8.0.0]
>>     at 
>> org.apache.wicket.ajax.AjaxRequestHandler.respond(AjaxRequestHandler.java:383) 
>> [wicket-core-8.0.0.jar:8.0.0]
>>     at 
>> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:912) 
>> [wicket-core-8.0.0.jar:8.0.0]
>>     at 
>> org.apache.wicket.request.RequestHandlerExecutor.execute(RequestHandlerExecutor.java:65) 
>> [wicket-request-8.0.0.jar:8.0.0]
>>     at 
>> org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:283) 
>> [wicket-core-8.0.0.jar:8.0.0]
>>     at 
>> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:253) 
>> [wicket-core-8.0.0.jar:8.0.0]
>>     at 
>> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:221) 
>> [wicket-core-8.0.0.jar:8.0.0]
>>
>>
>> ---------------------------------------------------------------------
>> 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: AJAX & IllegalStateException: Components can no longer be added

Posted by Sven Meier <sv...@meiers.net>.
Hi,

actually it is even more strict:

Once the ART has started generating the response - including preparation 
of components - you can now longer add other components.

This hasn't changed from 7.x to 8.x

We were discussing on lifting this restriction, but this would come with 
some difficulties: what if a component in beforeRender() adds one of its 
ancestors to be updated?

Have fun
Sven


Am 25.05.2018 um 10:44 schrieb Tobias Gierke:
> Hi,
>
> Can someone please explain to me what's causing this exception (see 
> end of this mail) when trying to add a component to an ART ?
>
> In 
> http://apache-wicket.1842946.n4.nabble.com/Components-can-no-longer-be-added-td4662838.html 
> Sven Meier said
>
>> once rendering of components via Ajax has started, you cannot update
>> components. 
> but as can be seen from the stacktrace I'm still in the beforeRender() 
> phase ... or is anything inside the beforeRender() code path already 
> considered to be part of the rendering phase ?
>
> Thanks,
> Tobias
>
> ----------------------------------------
>
>  java.lang.IllegalStateException: Components can no  longer be added
>     at 
> org.apache.wicket.page.PartialPageUpdate.assertNotFrozen(PartialPageUpdate.java:858) 
> ~[wicket-core-8.0.0.jar:8.0.0]
>     at 
> org.apache.wicket.page.PartialPageUpdate.assertComponentsNotFrozen(PartialPageUpdate.java:851) 
> ~[wicket-core-8.0.0.jar:8.0.0]
>     at 
> org.apache.wicket.page.PartialPageUpdate.add(PartialPageUpdate.java:448) 
> ~[wicket-core-8.0.0.jar:8.0.0]
>     at 
> org.apache.wicket.ajax.AjaxRequestHandler.add(AjaxRequestHandler.java:263) 
> ~[wicket-core-8.0.0.jar:8.0.0]
>     at 
> org.apache.wicket.ajax.AjaxRequestHandler.add(AjaxRequestHandler.java:239) 
> ~[wicket-core-8.0.0.jar:8.0.0]
>     at 
> com.vodecc.voipmng.boundary.wicket.xdrsearch.XDRListPanel$1.lambda$0(XDRListPanel.java:73) 
> ~[classes/:?]
>     at 
> com.vodecc.voipmng.boundary.wicket.behaviors.AjaxTooltipManager.doOnAjaxRequest(AjaxTooltipManager.java:411) 
> ~[classes/:?]
>     at 
> com.vodecc.voipmng.boundary.wicket.xdrsearch.XDRListPanel$1.queryFinished(XDRListPanel.java:73) 
> ~[classes/:?]
>     at 
> com.vodecc.voipmng.boundary.wicket.streamsearch.AbstractSearchResultsDataProvider.invokeCallbacks(AbstractSearchResultsDataProvider.java:241) 
> [classes/:?]
>     at 
> com.vodecc.voipmng.boundary.wicket.streamsearch.AbstractSearchResultsDataProvider.getSearchResults(AbstractSearchResultsDataProvider.java:230) 
> [classes/:?]
>     at 
> com.vodecc.voipmng.boundary.wicket.streamsearch.AbstractSearchResultsDataProvider.getSearchResults(AbstractSearchResultsDataProvider.java:252) 
> [classes/:?]
>     at 
> com.vodecc.voipmng.boundary.wicket.xdrsearch.XDRDataTable.onConfigure(XDRDataTable.java:436) 
> [classes/:?]
>     at org.apache.wicket.Component.configure(Component.java:984) 
> [wicket-core-8.0.0.jar:8.0.0]
>     at org.apache.wicket.Component.beforeRender(Component.java:926) 
> [wicket-core-8.0.0.jar:8.0.0]
>     at 
> org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1753) 
> [wicket-core-8.0.0.jar:8.0.0]
>     at org.apache.wicket.Component.onBeforeRender(Component.java:3796) 
> [wicket-core-8.0.0.jar:8.0.0]
>     at org.apache.wicket.Component.beforeRender(Component.java:937) 
> [wicket-core-8.0.0.jar:8.0.0]
>     at 
> org.apache.wicket.page.PartialPageUpdate.prepareComponent(PartialPageUpdate.java:322) 
> [wicket-core-8.0.0.jar:8.0.0]
>     at 
> org.apache.wicket.page.PartialPageUpdate.writeComponents(PartialPageUpdate.java:250) 
> [wicket-core-8.0.0.jar:8.0.0]
>     at 
> org.apache.wicket.page.PartialPageUpdate.writeTo(PartialPageUpdate.java:162) 
> [wicket-core-8.0.0.jar:8.0.0]
>     at 
> org.apache.wicket.ajax.AjaxRequestHandler.respond(AjaxRequestHandler.java:383) 
> [wicket-core-8.0.0.jar:8.0.0]
>     at 
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:912) 
> [wicket-core-8.0.0.jar:8.0.0]
>     at 
> org.apache.wicket.request.RequestHandlerExecutor.execute(RequestHandlerExecutor.java:65) 
> [wicket-request-8.0.0.jar:8.0.0]
>     at 
> org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:283) 
> [wicket-core-8.0.0.jar:8.0.0]
>     at 
> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:253) 
> [wicket-core-8.0.0.jar:8.0.0]
>     at 
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:221) 
> [wicket-core-8.0.0.jar:8.0.0]
>
>
> ---------------------------------------------------------------------
> 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