You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Jeremy Thomerson (JIRA)" <ji...@apache.org> on 2009/01/30 19:14:59 UTC
[jira] Commented: (WICKET-2063) Wizard buttons (previous / finish)
aren't enabled when they should be
[ https://issues.apache.org/jira/browse/WICKET-2063?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12668960#action_12668960 ]
Jeremy Thomerson commented on WICKET-2063:
------------------------------------------
Here are some more details about those two phases:
When you click to go from the first step to the second, this is the stack trace where the cached isEnabled flag is first calculated (incorrectly - before step has advanced)
Thread [btpool0-3] (Suspended)
PreviousButton(Component).isEnabledInHierarchy() line: 4386
Form$21(Form$ValidationVisitor).formComponent(IFormVisitorParticipant) line: 165
FormComponent<T>.visitFormComponentsPostOrderHelper(Component, FormComponent$IVisitor) line: 415
FormComponent<T>.visitFormComponentsPostOrderHelper(Component, FormComponent$IVisitor) line: 402
FormComponent<T>.visitFormComponentsPostOrderHelper(Component, FormComponent$IVisitor) line: 402
FormComponent<T>.visitFormComponentsPostOrder(Component, FormComponent$IVisitor) line: 374
Form<T>.visitFormComponentsPostOrder(FormComponent$IVisitor) line: 1158
Form<T>.validateComponents() line: 2013
Form<T>.validate() line: 1993
Form<T>.process() line: 937
Form<T>.process(IFormSubmittingComponent) line: 908
Form<T>.onFormSubmitted() line: 876
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: not available
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: not available
Method.invoke(Object, Object...) line: not available
RequestListenerInterface.invoke(Page, Component) line: 182
ListenerInterfaceRequestTarget.processEvents(RequestCycle) line: 73
WebRequestCycleProcessor(AbstractRequestCycleProcessor).processEvents(RequestCycle) line: 91
WebRequestCycle(RequestCycle).processEventsAndRespond() line: 1192
WebRequestCycle(RequestCycle).step() line: 1271
WebRequestCycle(RequestCycle).steps() line: 1370
WebRequestCycle(RequestCycle).request() line: 501
WicketFilter.doGet(HttpServletRequest, HttpServletResponse) line: 455
WicketFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 288
ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse) line: 1084
ServletHandler.handle(String, HttpServletRequest, HttpServletResponse, int) line: 360
SecurityHandler.handle(String, HttpServletRequest, HttpServletResponse, int) line: 216
SessionHandler.handle(String, HttpServletRequest, HttpServletResponse, int) line: 181
WebAppContext(ContextHandler).handle(String, HttpServletRequest, HttpServletResponse, int) line: 712
WebAppContext.handle(String, HttpServletRequest, HttpServletResponse, int) line: 405
Server(HandlerWrapper).handle(String, HttpServletRequest, HttpServletResponse, int) line: 139
Server.handle(HttpConnection) line: 313
HttpConnection.handleRequest() line: 506
HttpConnection$RequestHandler.content(Buffer) line: 844
HttpParser.parseNext() line: 644
HttpParser.parseAvailable() line: 211
HttpConnection.handle() line: 381
SocketConnector$Connection.run() line: 227
BoundedThreadPool$PoolThread.run() line: 442
After adding my patch, this is where it's calculated correctly for the second time (after the step has advanced)
Thread [btpool0-3] (Suspended)
PreviousButton(Component).isEnabledInHierarchy() line: 4386
PreviousButton(FormComponent<T>).onComponentTag(ComponentTag) line: 1461
PreviousButton(Button).onComponentTag(ComponentTag) line: 198
PreviousButton(Component).renderComponent(MarkupStream) line: 2523
PreviousButton(MarkupContainer).onRender(MarkupStream) line: 1521
PreviousButton(Component).render(MarkupStream) line: 2377
WizardButtonBar(MarkupContainer).renderNext(MarkupStream) line: 1399
WizardButtonBar(MarkupContainer).renderComponentTagBody(MarkupStream, ComponentTag) line: 1586
WizardButtonBar(MarkupContainer).renderAssociatedMarkup(String, String) line: 668
WizardButtonBar(Panel).onComponentTagBody(MarkupStream, ComponentTag) line: 114
WizardButtonBar(Component).renderComponent(MarkupStream) line: 2552
WizardButtonBar(MarkupContainer).onRender(MarkupStream) line: 1521
WizardButtonBar(Component).render(MarkupStream) line: 2377
Form<T>(MarkupContainer).renderNext(MarkupStream) line: 1399
Form<T>(MarkupContainer).renderComponentTagBody(MarkupStream, ComponentTag) line: 1586
Form<T>(MarkupContainer).onComponentTagBody(MarkupStream, ComponentTag) line: 1510
Form<T>.onComponentTagBody(MarkupStream, ComponentTag) line: 1845
Form<T>(Component).renderComponent(MarkupStream) line: 2552
Form<T>(MarkupContainer).onRender(MarkupStream) line: 1521
Form<T>.onRender(MarkupStream) line: 1916
Form<T>(Component).render(MarkupStream) line: 2377
StaticWizard(MarkupContainer).renderNext(MarkupStream) line: 1399
StaticWizard(MarkupContainer).renderComponentTagBody(MarkupStream, ComponentTag) line: 1586
StaticWizard(MarkupContainer).renderAssociatedMarkup(String, String) line: 668
StaticWizard(Panel).onComponentTagBody(MarkupStream, ComponentTag) line: 114
StaticWizard(Component).renderComponent(MarkupStream) line: 2552
StaticWizard(MarkupContainer).onRender(MarkupStream) line: 1521
StaticWizard(Component).render(MarkupStream) line: 2377
WizardPage(MarkupContainer).renderNext(MarkupStream) line: 1399
WizardPage(MarkupContainer).renderAll(MarkupStream) line: 1537
WizardPage(Page).onRender(MarkupStream) line: 1515
WizardPage(Component).render(MarkupStream) line: 2377
WizardPage(Page).renderPage() line: 919
WebRequestCycle.redirectTo(Page) line: 166
ListenerInterfaceRequestTarget(PageRequestTarget).respond(RequestCycle) line: 58
WebRequestCycleProcessor(AbstractRequestCycleProcessor).respond(RequestCycle) line: 104
WebRequestCycle(RequestCycle).processEventsAndRespond() line: 1200
WebRequestCycle(RequestCycle).step() line: 1271
WebRequestCycle(RequestCycle).steps() line: 1370
WebRequestCycle(RequestCycle).request() line: 501
WicketFilter.doGet(HttpServletRequest, HttpServletResponse) line: 455
WicketFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 288
ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse) line: 1084
ServletHandler.handle(String, HttpServletRequest, HttpServletResponse, int) line: 360
SecurityHandler.handle(String, HttpServletRequest, HttpServletResponse, int) line: 216
SessionHandler.handle(String, HttpServletRequest, HttpServletResponse, int) line: 181
WebAppContext(ContextHandler).handle(String, HttpServletRequest, HttpServletResponse, int) line: 712
WebAppContext.handle(String, HttpServletRequest, HttpServletResponse, int) line: 405
Server(HandlerWrapper).handle(String, HttpServletRequest, HttpServletResponse, int) line: 139
Server.handle(HttpConnection) line: 313
HttpConnection.handleRequest() line: 506
HttpConnection$RequestHandler.content(Buffer) line: 844
HttpParser.parseNext() line: 644
HttpParser.parseAvailable() line: 211
HttpConnection.handle() line: 381
SocketConnector$Connection.run() line: 227
BoundedThreadPool$PoolThread.run() line: 442
> Wizard buttons (previous / finish) aren't enabled when they should be
> ---------------------------------------------------------------------
>
> Key: WICKET-2063
> URL: https://issues.apache.org/jira/browse/WICKET-2063
> Project: Wicket
> Issue Type: Bug
> Components: wicket-extensions
> Affects Versions: 1.4-RC2
> Reporter: Jeremy Thomerson
> Fix For: 1.4-RC2
>
> Attachments: 2063.patch
>
>
> When using the Wizard component in 1.4-SNAPSHOT (sometime after 1.4-RC1), the previous and finish buttons don't enable when they should. I have found that this is because isEnabledInHierarchy is called multiple times, with the first time being during the POST process, before the wizard step is advanced to the next step. Since the step has not advanced when isEnabled is calculated, you get the following behavior:
> 1 - click "next" from first step to second - the "previous" button should be enabled, but it's not
> 2 - the "finish" button never is enabled, even on the last step
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.