Calling jsf.getViewState() with a direct reference to a form element throws an
exception
----------------------------------------------------------------------------------------
Key: MYFACES-3178
URL: https://issues.apache.org/jira/browse/MYFACES-3178
Project: MyFaces Core
Issue Type: Bug
Components: General, JSR-314
Affects Versions: 2.1.1, 2.1.0
Environment: Client
Reporter: Deryk Sinotte
The jsf.getViewState() function is a standard part of the JSF client API.
Currently, if I call this function with a valid reference to a form object, an
exception is thrown. Firefox 4 (with Firebug) reports it as:
this._onException is not a function
I believe the problem stems from the getViewState implementation itself in
Impl.js:
getViewState : function(form) {
/**
* typecheck assert!, we opt for strong typing here
* because it makes it easier to detect bugs
*/
if (form) {
form = this._Lang.byId(form);
}
if (!form
|| !form.nodeName
|| form.nodeName.toLowerCase() != "form") {
throw new Error(this._Lang.getMessage("ERR_VIEWSTATE"));
}
var ajaxUtils = new myfaces._impl.xhrCore._AjaxUtils(0);
var ret = this._Lang.createFormDataDecorator([]);
ajaxUtils.encodeSubmittableFields(ret, null, null, form, null);
return ret.makeFinal();
},
In that function, some checking is done to ensure that the form is a valid
reference, then a new AjaxUtils is created with no parameters. Typically these
would be warning and exception handlers. Since these handlers are missing,
when encodeSubmittable fields runs into a problem and tries to use the handler,
the above noted exception occurs.
When encodeSubmittableFields is called, the form reference is set as the
parameter expected for an individual form item and the parentItem is null. I
believe the form should be set as the parent item:
ajaxUtils.encodeSubmittableFields(ret, null, null, null, form, null);
By setting it as the parent item, the encoding logic should be able to handle
it correctly.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira