FormTester (BaseWicketTester.executeAjaxEvent[component,event]) submits also 
buttons that are hidden (isVisible=false) resulting in exception
---------------------------------------------------------------------------------------------------------------------------------------------

                 Key: WICKET-2016
                 URL: https://issues.apache.org/jira/browse/WICKET-2016
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 1.4-RC1
            Reporter: Martin Makundi
         Attachments: Wicket-Quickstart.zip

FormTester (BaseWicketTester.executeAjaxEvent[component,event]) submits also 
buttons that are hidden (isVisible=false) resulting in exception.

I am trying to ajax-click the visible button, but the formTester arranges even 
the hidden button to be submitted.. the form processing assumes the hidden 
button is now the submitting button.. and it is hidden, so an exception is 
thrown:

org.apache.wicket.WicketRuntimeException: Submit Button hiddenButton 
(path=form:hiddenButton) is not visible
        at org.apache.wicket.markup.html.form.Form$2.component(Form.java:604)
        at 
org.apache.wicket.MarkupContainer.visitChildren(MarkupContainer.java:859)
        at 
org.apache.wicket.MarkupContainer.visitChildren(MarkupContainer.java:874)
        at 
org.apache.wicket.markup.html.form.Form.findSubmittingButton(Form.java:588)
        at 
org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:852)
        at 
org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:132)
        at 
org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:166)
        at 
org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:299)
        at 
org.apache.wicket.util.tester.BaseWicketTester.executeAjaxEvent(BaseWicketTester.java:1170)
        at 
org.apache.wicket.util.tester.BaseWicketTester.executeAjaxEvent(BaseWicketTester.java:1080)
        at 
com.mycompany.TestHomePage.testAjaxSubmitWhileAnotherButtonIsNotVisible(TestHomePage.java:33)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at junit.framework.TestCase.runTest(TestCase.java:164)
        at junit.framework.TestCase.runBare(TestCase.java:130)
        at junit.framework.TestResult$1.protect(TestResult.java:106)
        at junit.framework.TestResult.runProtected(TestResult.java:124)
        at junit.framework.TestResult.run(TestResult.java:109)
        at junit.framework.TestCase.run(TestCase.java:120)
        at junit.framework.TestSuite.runTest(TestSuite.java:230)
        at junit.framework.TestSuite.run(TestSuite.java:225)
        at 
org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
        at 
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
        at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

I would assume this is an easy fix to the 
BaseWicketTester.executeAjaxEvent[component,event]) method where it visits the 
form components...

An invasive workaround: Just set your hidden button temporarily visible (from 
within your wickettest) while executing the ajax event ;)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to