Uploaded image for project: 'MyFaces Core'
  1. MyFaces Core
  2. MYFACES-3178

jsf.js: Calling jsf.getViewState() with a direct reference to a form element throws an exception

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.1.0, 2.1.1
    • 2.0.8, 2.1.2
    • General, JSR-314
    • None
    • Client

    Description

      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.

      Attachments

        1. getViewState.xhtml
          2 kB
          Deryk Sinotte
        2. MYFACES-3178.patch
          0.7 kB
          Deryk Sinotte

        Activity

          People

            Unassigned Unassigned
            dmsinotte Deryk Sinotte
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: