Uploaded image for project: 'Tapestry 5'
  1. Tapestry 5
  2. TAP5-1180

LinkSubmit does nothing

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Won't Fix
    • 5.1.0.5
    • None
    • tapestry-core
    • 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"); }

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

      Attachments

        Activity

          People

            Unassigned Unassigned
            paul.stanton Paul Stanton
            Votes:
            3 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: