[ 
https://issues.apache.org/jira/browse/WICKET-1429?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13154096#comment-13154096
 ] 

Martin Grigorov commented on WICKET-1429:
-----------------------------------------

Yes, this is a good idea. Please create a new ticket and attach a quickstart to 
it to save us some time.
It wont work in all cases though. It is the same problem as 
Component#onInitialize() solves - when adding the behavior to the Form the Form 
itself may still not know its parent and thus there is no way to know that it 
is nested or not. So we can do this check as a best effort in DEVELOPMENT mode.
                
> AjaxFormSubmitBehavior doesn't work well with nested forms
> ----------------------------------------------------------
>
>                 Key: WICKET-1429
>                 URL: https://issues.apache.org/jira/browse/WICKET-1429
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.3.2
>         Environment: Windows XP SP2, JDK 1.5, Apache Tomcat 6.0.14
>            Reporter: Olivier Dutrieux
>         Attachments: Wicket.zip
>
>
> Hello everybody,
> I need to know if it's normal I get error when I do that : 
> [code="TestPage.java"]
> public class TestPage extends WebPage {
>       public TestPage() {
>               Form f = new Form("f");
>               f.add(new AjaxFormSubmitBehavior("onsubmit") {
>                       @Override
>                       protected void onSubmit(AjaxRequestTarget target) {
>                               throw new UnsupportedOperationException("Not 
> supported yet.");
>                       }
>                       @Override
>                       protected void onError(AjaxRequestTarget target) {
>                               throw new UnsupportedOperationException("Not 
> supported yet.");
>                       }
>                       
>               });
>               f.setOutputMarkupId(true);
>               add(f);
>       }
> }
> [code="TestPage.html"]
> <html>
>   <head>
>     <title></title>
>     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
>   </head>
>   <body>
>   <form wicket:id="f">
>               <input type="submit" value="Sumbit"/>
>       </form>
>   </body>
> </html>
> I get a error message : 
> WicketMessage: Exception in rendering component: [MarkupContainer [Component 
> id = f, page = fr.pasteur.sig.wicket.bug.TestPage, path = 0:f.Form, isVisible 
> = true, isVersioned = true]]
> Root cause:
> java.lang.IllegalStateException: form was not specified in the constructor 
> and cannot be found in the hierarchy of the component this behavior is 
> attached to
> at 
> org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.getForm(AjaxFormSubmitBehavior.java:85)
> at 
> org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.getEventHandler(AjaxFormSubmitBehavior.java:97)
> at 
> org.apache.wicket.ajax.AjaxEventBehavior.onComponentTag(AjaxEventBehavior.java:108)
> at 
> org.apache.wicket.behavior.AbstractAjaxBehavior.onComponentTag(AbstractAjaxBehavior.java:132)
> at org.apache.wicket.Component.renderComponentTag(Component.java:3807)
> at org.apache.wicket.Component.renderComponent(Component.java:2462)
> at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1411)
> at org.apache.wicket.markup.html.form.Form.onRender(Form.java:1692)
> at org.apache.wicket.Component.render(Component.java:2308)
> at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1297)
> at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1427)
> at org.apache.wicket.Page.onRender(Page.java:1460)
> at org.apache.wicket.Component.render(Component.java:2308)
> at org.apache.wicket.Page.renderPage(Page.java:906)
> at 
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.respond(BookmarkablePageRequestTarget.java:231)
> at 
> org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:104)
> at 
> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1172)
> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1243)
> at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1330)
> at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
> at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:358)
> at 
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:194)
> at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at 
> org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
> at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> at java.lang.Thread.run(Thread.java:595)
> Complete stack:
> org.apache.wicket.WicketRuntimeException: Exception in rendering component: 
> [MarkupContainer [Component id = f, page = 
> fr.pasteur.sig.wicket.bug.TestPage, path = 0:f.Form, isVisible = true, 
> isVersioned = true]]
> at org.apache.wicket.Component.renderComponent(Component.java:2509)
> at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1411)
> at org.apache.wicket.markup.html.form.Form.onRender(Form.java:1692)
> at org.apache.wicket.Component.render(Component.java:2308)
> at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1297)
> at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1427)
> at org.apache.wicket.Page.onRender(Page.java:1460)
> at org.apache.wicket.Component.render(Component.java:2308)
> at org.apache.wicket.Page.renderPage(Page.java:906)
> at 
> org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.respond(BookmarkablePageRequestTarget.java:231)
> at 
> org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:104)
> at 
> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1172)
> at org.apache.wicket.RequestCycle.step(RequestCycle.java:1243)
> at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1330)
> at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
> at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:358)
> If I modify AjaxFormSubmitBehavior("onsubmit") by AjaxFormSubmitBehavior(f, 
> "onsubmit) that work perfecty.
> Best regards.
> Dutrieux

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to