You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by Deryk Sinotte <de...@icesoft.com> on 2011/06/14 20:49:01 UTC
Calling getViewState() on the client results in errors
We're running against MyFaces 2.1 and we have some code on the client
that calls getViewState(aValidFormReference) during the intial rendering
of the page. It's causing a JavaScript error and preventing proper
operation after the page has loaded. The flow of execution looks like this:
1) We call getViewState(aValidFormReference).
2) The getViewState function does some checking and processing which
includes:
...
var ajaxUtils = new myfaces._impl.xhrCore._AjaxUtils(0);
...
ajaxUtils.encodeSubmittableFields(ret, null, null, form, null);
...
Two things to note about this.
a) The AjaxUtils is created without any onWarning or onException
handlers (which it ends up complaining later).
b) The encodeSubmittableFields function expects to get the following
parameters:
function(targetBuf, request, context, item, parentItem, partialIds)
So the valid form instance is set as the item parameter but parentItem
is set to null (as we're already passing in the form per the
getViewState signature). Looking at what the encodeSubmittableFields
function does shows that the first thing it checks for is the parentItem:
...
try {
if (!parentItem) {
this._onWarning(request, context,
"myfaces._impl.xhrCore._AjaxUtils", "encodeSubmittableFields " +
"Html-Component is not nested in a Form-Tag");
return null;
}
...
Since there is nothing for handling onWarning, it then falls through to
the catch code and tries to do an onException, which also fails. I'm not
sure if there are 1 or more bugs involved here.
Should there be a check to see if the item passed in to
encodeSubmittableFields is a form to begin?
Should the AjaxUtils be created with proper onWarning and onException
handlers?
Should the form be passed in as the parentItem rather than the item to
be processed (or perhaps the parameter order is not correct)?
I can create JIRAs as necessary once I understand which behaviour is
problematic.
Deryk