You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Paul Stanton (JIRA)" <ji...@apache.org> on 2010/06/08 06:28:11 UTC

[jira] Commented: (TAP5-1180) LinkSubmit does nothing

    [ https://issues.apache.org/jira/browse/TAP5-1180?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12876540#action_12876540 ] 

Paul Stanton commented on TAP5-1180:
------------------------------------

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.

> LinkSubmit does nothing
> -----------------------
>
>                 Key: TAP5-1180
>                 URL: https://issues.apache.org/jira/browse/TAP5-1180
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.1.0.5
>            Reporter: Paul Stanton
>
> 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:p="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");
>    } 
> }
> ----------------------------------------------------------------------------------------------------------------------------------------------------

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