wicket abort ajax handling of multipart form when the server is stopped

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

wicket abort ajax handling of multipart form when the server is stopped

ywtsang
in normal case, I have tested that wicket ajax multipart form submit event can be triggered properly in this sequence

  onbefore
  onprecondition
  onbeforesend
  onafter
  onsucess
  oncomplete

but when the server is stopped and the same ajax multipart form is submitted, only these events are triggered

  onbefore
  onprecondition
  onbeforesend
  onafter

i.e. the onfaliure, oncomplete are not called

and the browser is just "hanged" and the wicket js is waiting forever for "load.handleMultipartComplete" from the upload iframe, i.e. this ajax form submit is not completed and further ajax event will be just queued

from the firebug console, the iframe html can be found as:

<iframe style="position: absolute; top: -9999px; left: -9999px;" src="about:blank" id="wicket-submit-2261453652137807" name="wicket-submit-2261453652137807">
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" hasBrowserHandlers="true">
  <head>
    <title>頁面載入發生問題</title>
    <link rel="stylesheet" href="chrome://browser/skin/aboutNetError.css" type="text/css" media="all"/>
    <!-- If the location of the favicon is changed here, the FAVICON_ERRORPAGE_URL symbol in
         toolkit/components/places/src/nsFaviconService.h should be updated. -->
    <link rel="icon" type="image/png" id="favicon" href="chrome://global/skin/icons/warning-16.png"/>

    <script type="application/javascript"><![CDATA[
      // Error url MUST be formatted like this:
      //   moz-neterror:page?e=error&u=url&d=desc
      //
      // or optionally, to specify an alternate CSS class to allow for
      // custom styling and favicon:
      //
      //   moz-neterror:page?e=error&u=url&s=classname&d=desc

      // Note that this file uses document.documentURI to get
      // the URL (with the format from above). This is because
      // document.location.href gets the current URI off the docshell,
      // which is the URL displayed in the location bar, i.e.
      // the URI that the user attempted to load.

      function getErrorCode()
      {
        var url = document.documentURI;
        var error = url.search(/e\=/);
        var duffUrl = url.search(/\&u\=/);
        return decodeURIComponent(url.slice(error + 2, duffUrl));
      }

      function getCSSClass()
      {
        var url = document.documentURI;
        var matches = url.match(/s\=([^&]+)\&/);
        // s is optional, if no match just return nothing
        if (!matches || matches.length < 2)
          return "";

        // parenthetical match is the second entry
        return decodeURIComponent(matches[1]);
      }

      function getDescription()
      {
        var url = document.documentURI;
        var desc = url.search(/d\=/);

        // desc == -1 if not found; if so, return an empty string
        // instead of what would turn out to be portions of the URI
        if (desc == -1)
          return "";

        return decodeURIComponent(url.slice(desc + 2));
      }

      function retryThis(buttonEl)
      {
        // Note: The application may wish to handle switching off "offline mode"
        // before this event handler runs, but using a capturing event handler.

        // Session history has the URL of the page that failed
        // to load, not the one of the error page. So, just call
        // reload(), which will also repost POST data correctly.
        try {
          location.reload();
        } catch (e) {
          // We probably tried to reload a URI that caused an exception to
          // occur;  e.g. a nonexistent file.
        }

        buttonEl.disabled = true;
      }

      function toggleDisplay(node) {
        toggle = {
          '': 'block',
          'none': 'block',
          'block': 'none'
        };
        node.style.display = toggle[node.style.display];
      }

      function showCertificateErrorReporting() {
        // Display error reporting UI
        document.getElementById('certificateErrorReporting').style.display = 'block';

        // Get the hostname and add it to the panel
        document.getElementById('hostname').textContent = document.location.hostname;

        // Register click handler for the certificateErrorReportingPanel
        document.getElementById('showCertificateErrorReportingPanel')
                .addEventListener('click', function togglePanelVisibility() {
          var panel = document.getElementById('certificateErrorReportingPanel');
          toggleDisplay(panel);
        });
      }


      function sendErrorReport() {
        var event = new CustomEvent("AboutNetErrorSendReport", {bubbles:true});

        document.dispatchEvent(event);
      }

      function initPage()
      {
        var err = getErrorCode();

        // if it's an unknown error or there's no title or description
        // defined, get the generic message
        var errTitle = document.getElementById("et_" + err);
        var errDesc  = document.getElementById("ed_" + err);
        if (!errTitle || !errDesc)
        {
          errTitle = document.getElementById("et_generic");
          errDesc  = document.getElementById("ed_generic");
        }

        var title = document.getElementById("errorTitleText");
        if (title)
        {
          title.parentNode.replaceChild(errTitle, title);
          // change id to the replaced child's id so styling works
          errTitle.id = "errorTitleText";
        }

        var sd = document.getElementById("errorShortDescText");
        if (sd)
          sd.textContent = getDescription();

        var ld = document.getElementById("errorLongDesc");
        if (ld)
        {
          ld.parentNode.replaceChild(errDesc, ld);
          // change id to the replaced child's id so styling works
          errDesc.id = "errorLongDesc";
        }

        if (err == "nssFailure2" &&
            sd.textContent.contains("ssl_error_unsupported_version")) {
          var ssl3ErrorTitle = document.getElementById("et_ssl3");
          var ssl3ErrorDesc = document.getElementById("ed_ssl3");
          var ssl3ShortDesc = document.getElementById("esd_ssl3");
          var learnMoreText = document.getElementById("learn_more_ssl3");

          errTitle.parentNode.replaceChild(ssl3ErrorTitle, errTitle);
          ssl3ErrorTitle.id = "errorTitleText";
          ssl3ErrorTitle.setAttribute("sslv3", "true");
          errTitle = ssl3ErrorTitle;

          sd.innerHTML = ssl3ShortDesc.innerHTML;
          sd.querySelector('span').textContent = location.hostname;

          errDesc.parentNode.replaceChild(ssl3ErrorDesc, errDesc);
          ssl3ErrorDesc.id = "errorLongDesc";
          ssl3ErrorDesc.querySelector('span').textContent = "ssl_error_unsupported_version";

          var retryBtn = document.getElementById("errorTryAgain");
          retryBtn.textContent = learnMoreText.textContent;
          retryBtn.setAttribute("onclick", "learnMoreSSLV3()");
        }

        // remove undisplayed errors to avoid bug 39098
        var errContainer = document.getElementById("errorContainer");
        errContainer.parentNode.removeChild(errContainer);

        var className = getCSSClass();
        if (className && className != "expertBadCert") {
          // Associate a CSS class with the root of the page, if one was passed in,
          // to allow custom styling.
          // Not "expertBadCert" though, don't want to deal with the favicon
          document.documentElement.className = className;

          // Also, if they specified a CSS class, they must supply their own
          // favicon.  In order to trigger the browser to repaint though, we
          // need to remove/add the link element.
          var favicon = document.getElementById("favicon");
          var faviconParent = favicon.parentNode;
          faviconParent.removeChild(favicon);
          favicon.setAttribute("href", "chrome://global/skin/icons/" + className + "_favicon.png");
          faviconParent.appendChild(favicon);
        }
        if (className == "expertBadCert") {
          showSecuritySection();
        }

        if (err == "remoteXUL") {
          // Remove the "Try again" button for remote XUL errors given that
          // it is useless.
          document.getElementById("errorTryAgain").style.display = "none";
        }

        if (err == "cspBlocked") {
          // Remove the "Try again" button for CSP violations, since it's
          // almost certainly useless. (Bug 553180)
          document.getElementById("errorTryAgain").style.display = "none";
        }

        window.addEventListener("AboutNetErrorOptions", function(evt) {
        // Pinning errors are of type nssFailure2 (don't ask me why)
          if (getErrorCode() == "nssFailure2" && !errTitle.hasAttribute("sslv3")) {
          // TODO: and the pref is set...
            var options = JSON.parse(evt.detail);
            if (options && options.enabled) {
              var checkbox = document.getElementById('automaticallyReportInFuture');
              showCertificateErrorReporting();
              if (options.automatic) {
                // set the checkbox
                checkbox.checked = true;
              }

              checkbox.addEventListener('change', function(evt) {
                  var event = new CustomEvent("AboutNetErrorSetAutomatic",
                    {bubbles:true, detail:evt.target.checked});
                  document.dispatchEvent(event);
                }, false);

              var reportBtn = document.getElementById('reportCertificateError');
              var retryBtn = document.getElementById('reportCertificateErrorRetry');

              reportBtn.addEventListener('click', sendErrorReport, false);
              retryBtn.addEventListener('click', sendErrorReport, false);
            }
          }
        }.bind(this), true, true);

        var event = new CustomEvent("AboutNetErrorLoad", {bubbles:true});
        document.dispatchEvent(event);

        if (err == "nssBadCert") {
          // Remove the "Try again" button for security exceptions, since it's
          // almost certainly useless.
          document.getElementById("errorTryAgain").style.display = "none";
          document.getElementById("errorPageContainer").setAttribute("class", "certerror");
          addDomainErrorLink();
        }
        else {
          // Remove the override block for non-certificate errors.  CSS-hiding
          // isn't good enough here, because of bug 39098
          var secOverride = document.getElementById("securityOverrideDiv");
          secOverride.parentNode.removeChild(secOverride);
        }
      }

      function showSecuritySection() {
        // Swap link out, content in
        document.getElementById('securityOverrideContent').style.display = '';
        document.getElementById('securityOverrideLink').style.display = 'none';
      }

      /* In the case of SSL error pages about domain mismatch, see if
         we can hyperlink the user to the correct site.  We don't want
         to do this generically since it allows MitM attacks to redirect
         users to a site under attacker control, but in certain cases
         it is safe (and helpful!) to do so.  Bug 402210
      */
      function addDomainErrorLink() {
        // Rather than textContent, we need to treat description as HTML
        var sd = document.getElementById("errorShortDescText");
        if (sd) {
          var desc = getDescription();

          // sanitize description text - see bug 441169

          // First, find the index of the <a> tag we care about, being careful not to
          // use an over-greedy regex
          var re = /<a id="cert_domain_link" title="([^"]+)">/;
          var result = re.exec(desc);
          if(!result)
            return;

          // Remove sd's existing children
          sd.textContent = "";

          // Everything up to the link should be text content
          sd.appendChild(document.createTextNode(desc.slice(0, result.index)));

          // Now create the link itself
          var anchorEl = document.createElement("a");
          anchorEl.setAttribute("id", "cert_domain_link");
          anchorEl.setAttribute("title", result[1]);
          anchorEl.appendChild(document.createTextNode(result[1]));
          sd.appendChild(anchorEl);

          // Finally, append text for anything after the closing </a>
          sd.appendChild(document.createTextNode(desc.slice(desc.indexOf("</a>") + "</a>".length)));
        }

        var link = document.getElementById('cert_domain_link');
        if (!link)
          return;

        var okHost = link.getAttribute("title");
        var thisHost = document.location.hostname;
        var proto = document.location.protocol;

        // If okHost is a wildcard domain ("*.example.com") let's
        // use "www" instead.  "*.example.com" isn't going to
        // get anyone anywhere useful. bug 432491
        okHost = okHost.replace(/^\*\./, "www.");

        /* case #1:
         * example.com uses an invalid security certificate.
         *
         * The certificate is only valid for www.example.com
         *
         * Make sure to include the "." ahead of thisHost so that
         * a MitM attack on paypal.com doesn't hyperlink to "notpaypal.com"
         *
         * We'd normally just use a RegExp here except that we lack a
         * library function to escape them properly (bug 248062), and
         * domain names are famous for having '.' characters in them,
         * which would allow spurious and possibly hostile matches.
         */
        if (endsWith(okHost, "." + thisHost))
          link.href = proto + okHost;

        /* case #2:
         * browser.garage.maemo.org uses an invalid security certificate.
         *
         * The certificate is only valid for garage.maemo.org
         */
        if (endsWith(thisHost, "." + okHost))
          link.href = proto + okHost;
      }

      function endsWith(haystack, needle) {
        return haystack.slice(-needle.length) == needle;
      }

      function learnMoreSSLV3() {
        location.href = "https://support.mozilla.org/kb/how-resolve-sslv3-error-messages-firefox";
        // Ensure users don't re-click the button:
        e.target.disabled = true;
      }
    ]]></script>
  </head>

  <body dir="ltr">

    <!-- ERROR ITEM CONTAINER (removed during loading to avoid bug 39098) -->
    

    <!-- PAGE CONTAINER (for styling purposes only) -->
    <div id="errorPageContainer">

      <!-- Error Title -->
      <div id="errorTitle">
        <h1 id="errorTitleText">連線失敗</h1>
      </div>

      <!-- LONG CONTENT (the section most likely to require scrolling) -->
      <div id="errorLongContent">

        <!-- Short Description -->
        <div id="errorShortDesc">
          <p id="errorShortDescText">Firefox 無法與伺服器 wing-dev.abc.com 建立連線。</p>
        </div>

        <!-- Long Description (Note: See netError.dtd for used XHTML tags) -->
        <div id="errorLongDesc">
<ul>
  <li>該網站可能暫時無法使用或太過忙碌,請過幾分鐘後再試試。</li>
  <li>若無法載入任何網站,請檢查您的網路連線狀態。</li>
  <li>若電腦或網路被防火牆或 Proxy 保護,請確定
    Firefox 被允許存取網路。</li>
</ul>
</div>

        <!-- Override section - For ssl errors only.  Removed on init for other
             error types.  -->
        

      </div>

      <!-- Retry Button -->
      <button id="errorTryAgain" autocomplete="off" onclick="retryThis(this);">重試</button>
      <script>
        // Only do autofocus if we're the toplevel frame; otherwise we
        // don't want to call attention to ourselves!  The key part is
        // that autofocus happens on insertion into the tree, so we
        // can remove the button, add @autofocus, and reinsert the
        // button.
        if (window.top == window) {
            var button = document.getElementById("errorTryAgain");
            var nextSibling = button.nextSibling;
            var parent = button.parentNode;
            parent.removeChild(button);
            button.setAttribute("autofocus", "true");
            parent.insertBefore(button, nextSibling);
        }
      </script>

      <!-- UI for option to report certificate errors to Mozilla. Removed on
           init for other error types .-->
      <div id="certificateErrorReporting">
        <a id="showCertificateErrorReportingPanel" href="#">回報此錯誤<span class="downArrow"> ▼</span></a>
      </div>

      <div id="certificateErrorReportingPanel">
        <p>回報 <span id="hostname"></span> 的地址與憑證資訊能夠幫助我們識別並封鎖惡意網站。感謝您幫助我們打造更安全的 Web!</p>
        <p>
          <input type="checkbox" id="automaticallyReportInFuture"/>
          <label for="automaticallyReportInFuture" id="automaticallyReportInFuture">自動回報未來的錯誤</label>
        </p>
        <!-- TODO add link to relevant page on sumo -->
        <a href="https://support.mozilla.org/kb/certificate-pinning-reports" target="new">更多資訊…</a>
        <span id="reportingState">
          <button id="reportCertificateError">回報</button>
          <button id="reportCertificateErrorRetry">重試</button>
          <span id="reportSendingMessage">正在傳送報告</span>
          <span id="reportSentMessage">已傳送報告</span>
        </span>
      </div>

    </div>

    <!--
    - Note: It is important to run the script this way, instead of using
    - an onload handler. This is because error pages are loaded as
    - LOAD_BACKGROUND, which means that onload handlers will not be executed.
    -->
    <script type="application/javascript">initPage();</script>

  </body>
</html>
</iframe>

the html inside the iframe simply means "Connection Error"

so how can I proceed to handle this problem?
Reply | Threaded
Open this post in threaded view
|

Re: wicket abort ajax handling of multipart form when the server is stopped

Martin Grigorov-4
Hi,

Please file a ticket at our JIRA.
We should improve this. E.g. by calling #onFailure() if the iframe doesn't
load after some timeout (jQuery#ajax()'s timeout).

Martin Grigorov
Freelancer, available for hire!
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Tue, Mar 24, 2015 at 7:01 AM, ywtsang <[hidden email]> wrote:

> in normal case, I have tested that wicket ajax multipart form submit event
> can be triggered properly in this sequence
>
>   onbefore
>   onprecondition
>   onbeforesend
>   onafter
>   onsucess
>   oncomplete
>
> but when the server is stopped and the same ajax multipart form is
> submitted, only these events are triggered
>
>   onbefore
>   onprecondition
>   onbeforesend
>   onafter
>
> i.e. the onfaliure, oncomplete are not called
>
> and the browser is just "hanged" and the wicket js is waiting forever for
> "load.handleMultipartComplete" from the upload iframe, i.e. this ajax form
> submit is not completed and further ajax event will be just queued
>
> from the firebug console, the iframe html can be found as:
>
>
>
> the html inside the iframe simply means "Connection Error"
>
> so how can I proceed to handle this problem?
>
> --
> View this message in context:
> http://apache-wicket.1842946.n4.nabble.com/wicket-abort-ajax-handling-of-multipart-form-when-the-server-is-stopped-tp4670076.html
> Sent from the Users forum mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>
Reply | Threaded
Open this post in threaded view
|

Re: wicket abort ajax handling of multipart form when the server is stopped

Martin Grigorov-4
Hi,

I cannot reproduce the problem.
The iframe with the "Connection error" content is indeed loaded but
wicket-ajax-jquery.js' #handleMultipartComplete() is called (i.e. 'load'
event is fired).
Then onFailure() [1] is called and finally Channel#done() [2] is called to
release it.
I don't see why it hangs for you.

1.
https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js#L951
2.
https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js#L978

Martin Grigorov
Freelancer, available for hire!
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Tue, Mar 24, 2015 at 11:46 AM, Martin Grigorov <[hidden email]>
wrote:

> Hi,
>
> Please file a ticket at our JIRA.
> We should improve this. E.g. by calling #onFailure() if the iframe doesn't
> load after some timeout (jQuery#ajax()'s timeout).
>
> Martin Grigorov
> Freelancer, available for hire!
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Tue, Mar 24, 2015 at 7:01 AM, ywtsang <[hidden email]> wrote:
>
>> in normal case, I have tested that wicket ajax multipart form submit event
>> can be triggered properly in this sequence
>>
>>   onbefore
>>   onprecondition
>>   onbeforesend
>>   onafter
>>   onsucess
>>   oncomplete
>>
>> but when the server is stopped and the same ajax multipart form is
>> submitted, only these events are triggered
>>
>>   onbefore
>>   onprecondition
>>   onbeforesend
>>   onafter
>>
>> i.e. the onfaliure, oncomplete are not called
>>
>> and the browser is just "hanged" and the wicket js is waiting forever for
>> "load.handleMultipartComplete" from the upload iframe, i.e. this ajax form
>> submit is not completed and further ajax event will be just queued
>>
>> from the firebug console, the iframe html can be found as:
>>
>>
>>
>> the html inside the iframe simply means "Connection Error"
>>
>> so how can I proceed to handle this problem?
>>
>> --
>> View this message in context:
>> http://apache-wicket.1842946.n4.nabble.com/wicket-abort-ajax-handling-of-multipart-form-when-the-server-is-stopped-tp4670076.html
>> Sent from the Users forum mailing list archive at Nabble.com.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [hidden email]
>> For additional commands, e-mail: [hidden email]
>>
>>
>
Reply | Threaded
Open this post in threaded view
|

Re: wicket abort ajax handling of multipart form when the server is stopped

Martin Grigorov-4
OK. I can reproduce the problem with Firefox. Chrome works fine.

Martin Grigorov
Freelancer, available for hire!
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Tue, Mar 24, 2015 at 11:28 PM, Martin Grigorov <[hidden email]>
wrote:

> Hi,
>
> I cannot reproduce the problem.
> The iframe with the "Connection error" content is indeed loaded but
> wicket-ajax-jquery.js' #handleMultipartComplete() is called (i.e. 'load'
> event is fired).
> Then onFailure() [1] is called and finally Channel#done() [2] is called to
> release it.
> I don't see why it hangs for you.
>
> 1.
> https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js#L951
> 2.
> https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js#L978
>
> Martin Grigorov
> Freelancer, available for hire!
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Tue, Mar 24, 2015 at 11:46 AM, Martin Grigorov <[hidden email]>
> wrote:
>
>> Hi,
>>
>> Please file a ticket at our JIRA.
>> We should improve this. E.g. by calling #onFailure() if the iframe
>> doesn't load after some timeout (jQuery#ajax()'s timeout).
>>
>> Martin Grigorov
>> Freelancer, available for hire!
>> Wicket Training and Consulting
>> https://twitter.com/mtgrigorov
>>
>> On Tue, Mar 24, 2015 at 7:01 AM, ywtsang <[hidden email]> wrote:
>>
>>> in normal case, I have tested that wicket ajax multipart form submit
>>> event
>>> can be triggered properly in this sequence
>>>
>>>   onbefore
>>>   onprecondition
>>>   onbeforesend
>>>   onafter
>>>   onsucess
>>>   oncomplete
>>>
>>> but when the server is stopped and the same ajax multipart form is
>>> submitted, only these events are triggered
>>>
>>>   onbefore
>>>   onprecondition
>>>   onbeforesend
>>>   onafter
>>>
>>> i.e. the onfaliure, oncomplete are not called
>>>
>>> and the browser is just "hanged" and the wicket js is waiting forever for
>>> "load.handleMultipartComplete" from the upload iframe, i.e. this ajax
>>> form
>>> submit is not completed and further ajax event will be just queued
>>>
>>> from the firebug console, the iframe html can be found as:
>>>
>>>
>>>
>>> the html inside the iframe simply means "Connection Error"
>>>
>>> so how can I proceed to handle this problem?
>>>
>>> --
>>> View this message in context:
>>> http://apache-wicket.1842946.n4.nabble.com/wicket-abort-ajax-handling-of-multipart-form-when-the-server-is-stopped-tp4670076.html
>>> Sent from the Users forum mailing list archive at Nabble.com.
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [hidden email]
>>> For additional commands, e-mail: [hidden email]
>>>
>>>
>>
>
Reply | Threaded
Open this post in threaded view
|

Re: wicket abort ajax handling of multipart form when the server is stopped

Martin Grigorov-4
https://issues.apache.org/jira/browse/WICKET-5864

Martin Grigorov
Freelancer, available for hire!
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Tue, Mar 24, 2015 at 11:53 PM, Martin Grigorov <[hidden email]>
wrote:

> OK. I can reproduce the problem with Firefox. Chrome works fine.
>
> Martin Grigorov
> Freelancer, available for hire!
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Tue, Mar 24, 2015 at 11:28 PM, Martin Grigorov <[hidden email]>
> wrote:
>
>> Hi,
>>
>> I cannot reproduce the problem.
>> The iframe with the "Connection error" content is indeed loaded but
>> wicket-ajax-jquery.js' #handleMultipartComplete() is called (i.e. 'load'
>> event is fired).
>> Then onFailure() [1] is called and finally Channel#done() [2] is called
>> to release it.
>> I don't see why it hangs for you.
>>
>> 1.
>> https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js#L951
>> 2.
>> https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js#L978
>>
>> Martin Grigorov
>> Freelancer, available for hire!
>> Wicket Training and Consulting
>> https://twitter.com/mtgrigorov
>>
>> On Tue, Mar 24, 2015 at 11:46 AM, Martin Grigorov <[hidden email]>
>> wrote:
>>
>>> Hi,
>>>
>>> Please file a ticket at our JIRA.
>>> We should improve this. E.g. by calling #onFailure() if the iframe
>>> doesn't load after some timeout (jQuery#ajax()'s timeout).
>>>
>>> Martin Grigorov
>>> Freelancer, available for hire!
>>> Wicket Training and Consulting
>>> https://twitter.com/mtgrigorov
>>>
>>> On Tue, Mar 24, 2015 at 7:01 AM, ywtsang <[hidden email]> wrote:
>>>
>>>> in normal case, I have tested that wicket ajax multipart form submit
>>>> event
>>>> can be triggered properly in this sequence
>>>>
>>>>   onbefore
>>>>   onprecondition
>>>>   onbeforesend
>>>>   onafter
>>>>   onsucess
>>>>   oncomplete
>>>>
>>>> but when the server is stopped and the same ajax multipart form is
>>>> submitted, only these events are triggered
>>>>
>>>>   onbefore
>>>>   onprecondition
>>>>   onbeforesend
>>>>   onafter
>>>>
>>>> i.e. the onfaliure, oncomplete are not called
>>>>
>>>> and the browser is just "hanged" and the wicket js is waiting forever
>>>> for
>>>> "load.handleMultipartComplete" from the upload iframe, i.e. this ajax
>>>> form
>>>> submit is not completed and further ajax event will be just queued
>>>>
>>>> from the firebug console, the iframe html can be found as:
>>>>
>>>>
>>>>
>>>> the html inside the iframe simply means "Connection Error"
>>>>
>>>> so how can I proceed to handle this problem?
>>>>
>>>> --
>>>> View this message in context:
>>>> http://apache-wicket.1842946.n4.nabble.com/wicket-abort-ajax-handling-of-multipart-form-when-the-server-is-stopped-tp4670076.html
>>>> Sent from the Users forum mailing list archive at Nabble.com.
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [hidden email]
>>>> For additional commands, e-mail: [hidden email]
>>>>
>>>>
>>>
>>
>
Reply | Threaded
Open this post in threaded view
|

Re: wicket abort ajax handling of multipart form when the server is stopped

ywtsang
Sorry that I missed to mention the browser.

Thanks for the quick help.

Do we have any schedule for the next wicket-7 release?
Reply | Threaded
Open this post in threaded view
|

Re: wicket abort ajax handling of multipart form when the server is stopped

Martin Grigorov-4
I guess it will be just before Apache Con, i.e. in two weeks.

Can you use -SNAPSHOT until then ?

Martin Grigorov
Freelancer, available for hire!
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Wed, Mar 25, 2015 at 6:53 AM, ywtsang <[hidden email]> wrote:

> Sorry that I missed to mention the browser.
>
> Thanks for the quick help.
>
> Do we have any schedule for the next wicket-7 release?
>
> --
> View this message in context:
> http://apache-wicket.1842946.n4.nabble.com/wicket-abort-ajax-handling-of-multipart-form-when-the-server-is-stopped-tp4670076p4670084.html
> Sent from the Users forum mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>
Reply | Threaded
Open this post in threaded view
|

Re: wicket abort ajax handling of multipart form when the server is stopped

ywtsang
Yes, this is fine, thanks.

On Wed, Mar 25, 2015 at 2:19 PM, Martin Grigorov <[hidden email]>
wrote:

> I guess it will be just before Apache Con, i.e. in two weeks.
>
> Can you use -SNAPSHOT until then ?
>
> Martin Grigorov
> Freelancer, available for hire!
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Wed, Mar 25, 2015 at 6:53 AM, ywtsang <[hidden email]> wrote:
>
> > Sorry that I missed to mention the browser.
> >
> > Thanks for the quick help.
> >
> > Do we have any schedule for the next wicket-7 release?
> >
> > --
> > View this message in context:
> >
> http://apache-wicket.1842946.n4.nabble.com/wicket-abort-ajax-handling-of-multipart-form-when-the-server-is-stopped-tp4670076p4670084.html
> > Sent from the Users forum mailing list archive at Nabble.com.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [hidden email]
> > For additional commands, e-mail: [hidden email]
> >
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: wicket abort ajax handling of multipart form when the server is stopped

Martin Grigorov-4
Note that you have to explicitly set a request timeout for the AjaxButton
if you want to be notified about the error in connection.
See the comments in the ticket for details.

Martin Grigorov
Freelancer, available for hire!
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Thu, Mar 26, 2015 at 1:12 PM, Yiu Wing TSANG <[hidden email]> wrote:

> Yes, this is fine, thanks.
>
> On Wed, Mar 25, 2015 at 2:19 PM, Martin Grigorov <[hidden email]>
> wrote:
>
> > I guess it will be just before Apache Con, i.e. in two weeks.
> >
> > Can you use -SNAPSHOT until then ?
> >
> > Martin Grigorov
> > Freelancer, available for hire!
> > Wicket Training and Consulting
> > https://twitter.com/mtgrigorov
> >
> > On Wed, Mar 25, 2015 at 6:53 AM, ywtsang <[hidden email]> wrote:
> >
> > > Sorry that I missed to mention the browser.
> > >
> > > Thanks for the quick help.
> > >
> > > Do we have any schedule for the next wicket-7 release?
> > >
> > > --
> > > View this message in context:
> > >
> >
> http://apache-wicket.1842946.n4.nabble.com/wicket-abort-ajax-handling-of-multipart-form-when-the-server-is-stopped-tp4670076p4670084.html
> > > Sent from the Users forum mailing list archive at Nabble.com.
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [hidden email]
> > > For additional commands, e-mail: [hidden email]
> > >
> > >
> >
>