You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Howard M. Lewis Ship (Moved) (JIRA)" <ji...@apache.org> on 2012/02/23 23:53:48 UTC

[jira] [Moved] (TAP5-1854) AjaxComponentEventRequestHandler adds a new JSONObject to my JSONObject return

     [ https://issues.apache.org/jira/browse/TAP5-1854?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Howard M. Lewis Ship moved TAPESTRY-2789 to TAP5-1854:
------------------------------------------------------

    Component/s:     (was: tapestry-core)
                 tapestry-core
            Key: TAP5-1854  (was: TAPESTRY-2789)
        Project: Tapestry 5  (was: Tapestry)
    
> AjaxComponentEventRequestHandler adds a new JSONObject to my JSONObject return
> ------------------------------------------------------------------------------
>
>                 Key: TAP5-1854
>                 URL: https://issues.apache.org/jira/browse/TAP5-1854
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>         Environment: WebSphere on linux, and Jetty on osx
>            Reporter: Kai Lilleby
>            Priority: Blocker
>
> In committ 1155178 the removal of "if (resultProcessorInvoked.get()) return" seems to have reintroduced an old issue (#TAPESTRY-2619).
> When running on a Servlet engine that does not honor HttpResponse.getOutputStream().close() - i.e. subsequent writing to the responses outputstream will be written to the client - which is true for WebSphere but not for Jetty, the final line in AjaxComponentEventRequestHandler will write an new jsonobject to the response, resulting in an invalid json structure. 
> My guess would be that the following block of code:
> -------------
>         if ((!resultProcessorInvoked.get()) && queue.isPartialRenderInitialized())
>         {
>             partialRenderer.renderPartialPageMarkup();
>             return;
>         }
>         // Send an empty JSON reply if no value was returned from the component event handler method.
>         // This is the typical behavior when an Ajax component event handler returns null.
>         JSONObject reply = new JSONObject();
>         resultProcessor.processResultValue(reply);
> }
> ---------------
> should be replaced with:
> --------------- 
>        if ((!resultProcessorInvoked.get()) && queue.isPartialRenderInitialized())
>         {
>             partialRenderer.renderPartialPageMarkup();
>             return;
>         }
>        // If the result processor was passed a value, then it will already have rendered, and there is nothing more to do.
>        if (resultProcessorInvoked.get()) return;
>        
>         // Send an empty JSON reply if no value was returned from the component event handler method.
>         // This is the typical behavior when an Ajax component event handler returns null.
>         JSONObject reply = new JSONObject();
>         resultProcessor.processResultValue(reply);
> }
> ------------------

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira