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

        

Reply via email to