[
https://issues.apache.org/jira/browse/WICKET-6842?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17214820#comment-17214820
]
Johannes Renoth commented on WICKET-6842:
-----------------------------------------
I have a slightly different Stacktrace but with the same result, in the
meantime i tried to reproduce the issue with a quickstart but no luck so far.
{code:java}
checkHierarchyChange:3553, Component (org.apache.wicket) -> Page RENDER FLAG
TRUE -> RuntimeException
dirty:270, Page (org.apache.wicket)
dirty:317, WebPage (org.apache.wicket.markup.html)
dirty:249, Page (org.apache.wicket)
componentModelChanging:883, Page (org.apache.wicket)
modelChanging:2150, Component (org.apache.wicket)
setDefaultModel:2926, Component (org.apache.wicket)
...
onBeforeRender:571, XXX3
onBeforeRender:52, XXX2
onBeforeRender:89, XXX1
beforeRender:939, Component (org.apache.wicket)
onBeforeRenderChildren:1737, MarkupContainer (org.apache.wicket)
onBeforeRender:3808, Component (org.apache.wicket)
beforeRender:939, Component (org.apache.wicket)
onBeforeRenderChildren:1737, MarkupContainer (org.apache.wicket)
onBeforeRender:3808, Component (org.apache.wicket)
beforeRender:939, Component (org.apache.wicket)
onBeforeRenderChildren:1737, MarkupContainer (org.apache.wicket)
onBeforeRender:3808, Component (org.apache.wicket)
beforeRender:939, Component (org.apache.wicket)
onBeforeRenderChildren:1737, MarkupContainer (org.apache.wicket)
onBeforeRender:3808, Component (org.apache.wicket)
beforeRender:939, Component (org.apache.wicket)
onBeforeRenderChildren:1737, MarkupContainer (org.apache.wicket)
onBeforeRender:3808, Component (org.apache.wicket)
beforeRender:939, Component (org.apache.wicket)
onBeforeRenderChildren:1737, MarkupContainer (org.apache.wicket)
onBeforeRender:3808, Component (org.apache.wicket)
beforeRender:939, Component (org.apache.wicket)
onBeforeRenderChildren:1737, MarkupContainer (org.apache.wicket)
onBeforeRender:3808, Component (org.apache.wicket)
beforeRender:939, Component (org.apache.wicket)
onBeforeRenderChildren:1737, MarkupContainer (org.apache.wicket)
onBeforeRender:3808, Component (org.apache.wicket)
beforeRender:939, Component (org.apache.wicket)
render:2218, Component (org.apache.wicket)
-> this == BORDER (if that is relevant)
renderNext:1437, MarkupContainer (org.apache.wicket)
renderAll:1637, MarkupContainer (org.apache.wicket)
renderComponentTagBody:1612, MarkupContainer (org.apache.wicket)
renderAssociatedMarkup:804, MarkupContainer (org.apache.wicket)
renderAssociatedMarkup:77, AssociatedMarkupSourcingStrategy
(org.apache.wicket.markup.html.panel)
...
{code}
I made some screenshots to illustrate the problematic part where Wicket
switches from render to beforeRender
Inside a Border render is called, since it is in auto mode it calls before
render ...
!image-2020-10-15-18-22-55-532.png!
... then it calls onbeforerender ...
!image-2020-10-15-18-24-23-028.png!
.. then onbeforerenderchildren ...
!image-2020-10-15-18-25-02-102.png!
.. where it finally calls beforeRender of a child panel, which then traverses
depth first straight to my other wicket component which calls setdefaultmodel
in onbeforerender.
!image-2020-10-15-18-25-44-692.png!
> onRender calls onBeforeRender
> -----------------------------
>
> Key: WICKET-6842
> URL: https://issues.apache.org/jira/browse/WICKET-6842
> Project: Wicket
> Issue Type: Bug
> Affects Versions: 8.7.0
> Reporter: Johannes Renoth
> Priority: Major
> Attachments: image-2020-10-15-18-22-55-532.png,
> image-2020-10-15-18-24-23-028.png, image-2020-10-15-18-25-02-102.png,
> image-2020-10-15-18-25-44-692.png
>
>
> I am not 100% sure if this is a bug in Wicket but i have the following
> stacktrace from our application:
> {code:java}
> org.apache.wicket.WicketRuntimeException: Cannot modify component hierarchy
> after render phase has started (page version cant change then anymore)
> at org.apache.wicket.Component.checkHierarchyChange(Component.java:3553)
> at org.apache.wicket.Page.dirty(Page.java:270)
> at org.apache.wicket.markup.html.WebPage.dirty(WebPage.java:317)
> at org.apache.wicket.Page.dirty(Page.java:249) at
> org.apache.wicket.Page.componentModelChanging(Page.java:883)
> at org.apache.wicket.Component.modelChanging(Component.java:2150)
> at org.apache.wicket.Component.setDefaultModel(Component.java:2926)
> ...
> at xyz.onBeforeRender(XYZ2.java:571)
> at xyz.onBeforeRender(XYZ1.java:52)
> at xyz.onBeforeRender(XYZ.java:89)
> at org.apache.wicket.Component.beforeRender(Component.java:939)
> at
> org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1737)
> at org.apache.wicket.Component.onBeforeRender(Component.java:3808)
> at org.apache.wicket.Component.beforeRender(Component.java:939)
> at
> org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1737)
> at org.apache.wicket.Component.onBeforeRender(Component.java:3808)
> at org.apache.wicket.Component.beforeRender(Component.java:939)
> at
> org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1737)
> at org.apache.wicket.Component.onBeforeRender(Component.java:3808)
> at org.apache.wicket.Component.beforeRender(Component.java:939)
> at
> org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1737)
> at org.apache.wicket.Component.onBeforeRender(Component.java:3808)
> at org.apache.wicket.Component.beforeRender(Component.java:939)
> at
> org.apache.wicket.MarkupContainer.addedComponent(MarkupContainer.java:1029)
> at org.apache.wicket.MarkupContainer.add(MarkupContainer.java:240)
> at org.apache.wicket.MarkupContainer.autoAdd(MarkupContainer.java:313)
> at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1426)
> at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1637)
> at
> org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1612)
> at
> org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1570)
> at
> org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:70)
>
> at
> org.apache.wicket.markup.html.panel.DefaultMarkupSourcingStrategy.onComponentTagBody(DefaultMarkupSourcingStrategy.java:70)
>
> at org.apache.wicket.Component.internalRenderComponent(Component.java:2491)
> at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1576)
> at org.apache.wicket.Component.internalRender(Component.java:2296)
> {code}
> I have a Form component inside a Border inside a Form (if that is relevant)
> I dont think onbeforeRender should be called in the render phase of another
> component (which ultimately leads to this error).
--
This message was sent by Atlassian Jira
(v8.3.4#803005)