[
https://issues.jboss.org/browse/RF-13093?page=com.atlassian.jira.plugin.s...
]
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