Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: 5.1.0.5
    • Fix Version/s: None
    • Component/s: tapestry-core
    • Labels:
      None

      Description

      After stepping through the javascript, I believe it's because the onsubmit event handler for the form is "javascript:Tapestry.waitForPage(event);" who's first line is "if (Tapestry.pageLoaded) return;".

      This is the equivalent of "if (Tapestry.pageLoaded) return false;" when evaluated to a boolean as it is in the LinkSubmit onClick handler:

      if (onsubmit == undefined || onsubmit.call(window.document, event))

      { this.createHidden(); this.form.submit(); }

      .. and therefore "this.form.submit();" is never called.

      Obviously this is a bug, I'm pretty sure the resolution would be to change Tapestry.waitForPage so that it returns true if the page is loaded and false otherwise, ie:

      waitForPage : function(event)

      { if (Tapestry.pageLoaded) return true; ... return false; }

      This will allow 'waitForPage' to be evaluated to a boolean as it is in LinkSubmit.onClick, however there may be a better solution.

      EG:

      MyPage.tml:
      ----------------------------------------------------------------------------------------------------------------------------------------------------
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns="tapestry:parameter">
      <t:form t:id="myForm">
      <t:linksubmit t:id="myLink">link</t:linksubmit>
      <t:submit t:id="mySubmit" />
      </t:form>
      </html>
      ----------------------------------------------------------------------------------------------------------------------------------------------------
      MyPage.java
      ----------------------------------------------------------------------------------------------------------------------------------------------------
      public Class MyPage
      {
      public void onSuccessFromMyForm()

      { LOG.debug("onSuccessFromMyForm"); }

      public void onSelectedFromMyLink()

      { LOG.debug("onSelectedFromMyLink"); }

      public void onSelectedFromMySubmit()

      { LOG.debug("onSelectedFromMySubmit"); }

      }
      ----------------------------------------------------------------------------------------------------------------------------------------------------

        Activity

        Paul Stanton created issue -
        Hide
        Paul Stanton added a comment -

        looks like the same as TAP5-930 however he did not describe it properly.

        Show
        Paul Stanton added a comment - looks like the same as TAP5-930 however he did not describe it properly.
        Hide
        Paul Stanton added a comment -

        i've tested my above idea re returning true from waitForPage and it didn't work.

        it seems that 'onsubmit.call(window.document, event)' returns 'undefined' regardless of what the function returns.

        therefore my workaround is to comment out the whole if statement in LinkSubmit.onClick:

        // if (onsubmit == undefined || onsubmit.call(window.document, event))

        { this.createHidden(); this.form.submit(); }

        Having done this, linksubmit works again, however obviously it doesn't handle a premature click properly.

        Hope that helps you find the proper solution.

        p.

        Show
        Paul Stanton added a comment - i've tested my above idea re returning true from waitForPage and it didn't work. it seems that 'onsubmit.call(window.document, event)' returns 'undefined' regardless of what the function returns. therefore my workaround is to comment out the whole if statement in LinkSubmit.onClick: // if (onsubmit == undefined || onsubmit.call(window.document, event)) { this.createHidden(); this.form.submit(); } Having done this, linksubmit works again, however obviously it doesn't handle a premature click properly. Hope that helps you find the proper solution. p.
        Hide
        Taha Hafeez added a comment -

        Should this one be closed

        Show
        Taha Hafeez added a comment - Should this one be closed
        Hide
        Howard M. Lewis Ship added a comment -

        I've never seen the problem you see, across multiple browsers and versions of Tapestry. Please re-open with a test case if the problem still remains.

        Show
        Howard M. Lewis Ship added a comment - I've never seen the problem you see, across multiple browsers and versions of Tapestry. Please re-open with a test case if the problem still remains.
        Howard M. Lewis Ship made changes -
        Field Original Value New Value
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Cannot Reproduce [ 5 ]
        Hide
        Paul Stanton added a comment -

        I have re-tested this under tapestry 5.1.0.5 and it is broken. the example above shows the problem in action for me.

        Show
        Paul Stanton added a comment - I have re-tested this under tapestry 5.1.0.5 and it is broken. the example above shows the problem in action for me.
        Paul Stanton made changes -
        Resolution Cannot Reproduce [ 5 ]
        Status Resolved [ 5 ] Reopened [ 4 ]
        Hide
        Massimo Lusetti added a comment -

        I've tested this against 5.1.0.5 and it still apply, I mean LinkSubmit don't fire the events while Submit does.

        Tested against latest 5.3-beta21 LinkSubmit works as expected (fire the event and form submission)

        A workaround for 5.1.0.5 is to monkey patch tapestry.js

        Show
        Massimo Lusetti added a comment - I've tested this against 5.1.0.5 and it still apply, I mean LinkSubmit don't fire the events while Submit does. Tested against latest 5.3-beta21 LinkSubmit works as expected (fire the event and form submission) A workaround for 5.1.0.5 is to monkey patch tapestry.js
        Massimo Lusetti made changes -
        Status Reopened [ 4 ] Resolved [ 5 ]
        Resolution Won't Fix [ 2 ]
        Transition Time In Source Status Execution Times Last Executer Last Execution Date
        Open Open Resolved Resolved
        429d 14h 38m 1 Howard M. Lewis Ship 11/Aug/11 19:44
        Resolved Resolved Reopened Reopened
        11d 3h 13m 1 Paul Stanton 22/Aug/11 22:57
        Reopened Reopened Resolved Resolved
        52d 19h 6m 1 Massimo Lusetti 14/Oct/11 18:04

          People

          • Assignee:
            Unassigned
            Reporter:
            Paul Stanton
          • Votes:
            3 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development