[richfaces-issues] [JBoss JIRA] (RF-13093) extendedDataTable column resizing and reordering not working on transient (stateless) views

Salvo Isaja (JIRA) jira-events at lists.jboss.org
Thu Aug 15 12:41:27 EDT 2013


    [ https://issues.jboss.org/browse/RF-13093?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12797122#comment-12797122 ] 

Salvo Isaja commented on RF-13093:
----------------------------------

Here is a workaround that works on RichFaces 4.3.x and JSF 2.1 (tested on RichFaces 4.3.4 on GlassFish 3.1.2.2 with Mojarra 2.1.23).
Include the following JavaScript after the standard jsf.js:

{code}
var origJsfAjaxResponse = jsf.ajax.response;
jsf.ajax.response = function response(request, context) {
    var xml = request.responseXML;
    var pr = xml.getElementsByTagName("partial-response")[0];
    if (pr.children.length === 0) {
        $(pr).append('<changes><update id="javax.faces.ViewState">stateless</update></changes>');
    }
    return origJsfAjaxResponse(request, context);
};
{code}

If an empty partial-response is received, it just adds an update of the stateless ViewState as it would happen with non-transient views. I've tested it as is, but I suppose the "name" attribute would be more appropriate than "id", depending on how the JSF implementations lays out the ViewState hidden.
This is not specific to rich:extendedDataTable but works around any case the server returns an empty partial-response.
                
> extendedDataTable column resizing and reordering not working on transient (stateless) views
> -------------------------------------------------------------------------------------------
>
>                 Key: RF-13093
>                 URL: https://issues.jboss.org/browse/RF-13093
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: component-tables
>    Affects Versions: 4.3.2
>         Environment: GlassFish 3.1.2.2 with Mojarra 2.1.23
>            Reporter: Salvo Isaja
>              Labels: jsf22
>             Fix For: 5.0.0.Alpha2
>
>
> When turning on transient (stateless) views in recent Mojarra versions (as per JSF 2.2 specification, to my best understanding), using request scoped backing beans, javax.faces.ViewState becomes the constant "stateless". Column resizing and reordering in extendedDataTable causes an Ajax request to the server, but in this case an invalid response is sent, containing only:
> {code:xml}
> <?xml version='1.0' encoding='UTF-8'?>
> <partial-response></partial-response>
> {code}
> This causes an exception in {{jsf.js}} because the partial-response element has no children and no further JavaScript processing happens in the view until the page is reloaded. In the non-transient view case, I see a {{change}} element updating only the ViewState is returned, instead.
> Other features seem to work pretty well in stateless mode, by the way.
> Thanks

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the richfaces-issues mailing list