Package org.ajax4jsf.renderkit

Source Code of org.ajax4jsf.renderkit.AjaxFunctionRendererBase

/**
* License Agreement.
*
* Rich Faces - Natural Ajax for Java Server Faces (JSF)
*
* Copyright (C) 2007 Exadel, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
*/

package org.ajax4jsf.renderkit;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.faces.FacesException;
import javax.faces.component.UIComponent;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;

import org.ajax4jsf.component.UIAjaxFunction;
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.javascript.JSFunctionDefinition;
import org.ajax4jsf.javascript.JSReference;
import org.ajax4jsf.javascript.ScriptUtils;

/**
* @author shura
*
*/
public class AjaxFunctionRendererBase extends AjaxCommandRendererBase {

  /*
   * (non-Javadoc)
   *
   * @see org.ajax4jsf.renderkit.RendererBase#getComponentClass()
   */
  protected Class<? extends UIComponent> getComponentClass() {
    return null;
  }

  public String getFunction(FacesContext context, UIAjaxFunction component) {
    String functionName = component.getName();
    if (functionName == null) {
      throw new FacesException("Value of 'name' attribute of a4j:jsFunction component is null!");
    }
   
    StringBuffer script = new StringBuffer(functionName).append("=");
    JSFunctionDefinition func = new JSFunctionDefinition();
    //func.setName(component.getName());
    // Create AJAX Submit function.
    JSFunction ajaxFunction = AjaxRendererUtils.buildAjaxFunction(
        component, context,AjaxRendererUtils.AJAX_FUNCTION_NAME);
    Map<String, Object> options = AjaxRendererUtils.buildEventOptions(context, component);
    Map<String, Object> parameters = (Map<String, Object>) options.get("parameters");
    if (null == parameters) {
      parameters = new HashMap<String, Object>();
      options.put("parameters", parameters);
    }
    ajaxFunction.addParameter(JSReference.NULL);
    ajaxFunction.addParameter(options);
    // Fill parameters.
    for (Iterator<UIComponent> it = component.getChildren().iterator(); it.hasNext();) {
      UIComponent child = it.next();
      if (child instanceof UIParameter) {
        UIParameter parameter = ((UIParameter) child);
        String name = parameter.getName();
        func.addParameter(name);
        // Put parameter name to AJAX.Submit parameter, with default value.
        JSReference reference = new JSReference(name);
        if (null != parameter.getValue()) {
          reference = new JSReference(name + "||"
              + ScriptUtils.toScript(parameters.get(name)));

        }
        // Replace parameter value to reference.
        parameters.put(name, reference);
      }
    }
    func.addToBody(ajaxFunction.toScript());
    func.appendScript(script);
    return script.toString();
  }
}
TOP

Related Classes of org.ajax4jsf.renderkit.AjaxFunctionRendererBase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.