[
https://issues.apache.org/jira/browse/WICKET-4895?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martin Grigorov resolved WICKET-4895.
-------------------------------------
Resolution: Fixed
Fix Version/s: 1.5.10
6.4.0
Assignee: Martin Grigorov
An improvement is added to prevent this error.
Until 6.4.0 you can use the solution from my previous comment.
> WicketRuntimeException: addOrReplace for feedback panel does not clear
> Component.FEEDBACK_LIST - feedback from replaced component causes error.
> -----------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: WICKET-4895
> URL: https://issues.apache.org/jira/browse/WICKET-4895
> Project: Wicket
> Issue Type: Bug
> Components: wicket
> Affects Versions: 6.3.0
> Environment: Wicket 6.3.0
> Reporter: Artem Morozov
> Assignee: Martin Grigorov
> Fix For: 6.4.0, 1.5.10
>
> Attachments: quickstart.zip
>
>
> Refresh for page, containing feedback panel causes WicketRuntimeException.
> I have MarkupContainer wich has overriden
> protected void onBeforeRender()
> where I call addOrReplace to add or replace component with feedback panel.
> I have noticed that refreshing such page causes
> Caused by: java.lang.RuntimeException: An error occurred while getting the
> model object for Component: [MessageListView [Component id = messages, page =
> <No Page>, ...
> During dubug Wicket 6.3.0 I see that
> Component.beforeRender() method has multiple feedbacks in
> getRequestCycle().getMetaData(FEEDBACK_LIST)
> insteas of one - witch I've replaced in MarkupContainer.onBeforeRender().
> Call to
> oldFeedBack.prepareForRender();
> before addOrReplace fixes problem, but prepareForRender is not in public API.
> StackTrace:
> org.apache.wicket.WicketRuntimeException: Error attaching this container for
> rendering: [Component id = feedbackPanel]
> at
> org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1692)
> at org.apache.wicket.Component.onBeforeRender(Component.java:3830)
> at org.apache.wicket.Component.internalBeforeRender(Component.java:922)
> at
> org.apache.wicket.Component.internalPrepareForRender(Component.java:2222)
> at org.apache.wicket.Page.internalPrepareForRender(Page.java:247)
> at org.apache.wicket.Component.render(Component.java:2289)
> at org.apache.wicket.Page.renderPage(Page.java:1021)
> at
> org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:116)
> at
> org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:196)
> at
> org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:165)
> at
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:830)
> at
> org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
> at
> org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:253)
> at
> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:210)
> at
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:281)
> at
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188)
> at
> org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:137)
> <....>
> Caused by: java.lang.RuntimeException: An error occurred while getting the
> model object for Component: [MessageListView [Component id = messages, page =
> <No Page> ...
> at org.apache.wicket.Component.getDefaultModelObject(Component.java:1620)
> at
> org.apache.wicket.markup.html.list.ListView.getModelObject(ListView.java:644)
> at
> org.apache.wicket.markup.html.panel.FeedbackPanel.getCurrentMessages(FeedbackPanel.java:307)
> at
> org.apache.wicket.markup.html.panel.FeedbackPanel.anyMessage(FeedbackPanel.java:200)
> at
> org.apache.wicket.markup.html.panel.FeedbackPanel.anyMessage(FeedbackPanel.java:187)
> at
> org.apache.wicket.markup.html.panel.FeedbackPanel$1.onConfigure(FeedbackPanel.java:155)
> at org.apache.wicket.Component.configure(Component.java:1028)
> at org.apache.wicket.Component.internalBeforeRender(Component.java:913)
> at org.apache.wicket.Component.beforeRender(Component.java:990)
> at
> org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1680)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira