All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.larmic.butterfaces.resolver.AjaxRequest Maven / Gradle / Ivy

package de.larmic.butterfaces.resolver;

import de.larmic.butterfaces.component.html.ajax.JsfAjaxRequest;
import de.larmic.butterfaces.component.partrenderer.StringUtils;

import javax.faces.component.UIComponentBase;
import java.util.Iterator;
import java.util.List;

/**
 * First try to create a jsf.ajax.request factory. I think there is a nicer way to implement this but up to now it works.
 *
 * @deprecated Use {@link JsfAjaxRequest} instead.
 */
@Deprecated
public class AjaxRequest {

    private final List renderIds;
    private final UIComponentBase component;
    private final String onevent;
    private final String eventName;
    private final String params;

    public AjaxRequest(final UIComponentBase component, final String event) {
        this(component, event, null);
    }

    public AjaxRequest(final UIComponentBase component, final String event, final String onEvent) {
        this(component, event, onEvent, null);
    }

    public AjaxRequest(final UIComponentBase component, final String event, final String onEvent, final String params) {
        this.renderIds = JsfAjaxRequest.createRerenderIds(component, event);
        this.component = component;
        this.onevent = onEvent;
        this.eventName = event;
        this.params = params;
    }

    public String createJavaScriptCall() {
        return this.createJavaScriptCall(eventName);
    }

    public String createJavaScriptCall(final String customEventName) {
        return this.createJavaScriptCall(customEventName, onevent);
    }

    public String createJavaScriptCall(final String customEventName, final String customOnEvent) {
        final String render = this.createRender(this.renderIds);

        if (StringUtils.isEmpty(customOnEvent)) {
            return "jsf.ajax.request('" + component.getClientId() + "','" + customEventName + "',{" + createRenderPart(render) + createParamsPart(params) + "'javax.faces.behavior.event':'" + customEventName + "'});";
        }

        return "jsf.ajax.request('" + component.getClientId() + "','" + customEventName + "',{" + createRenderPart(render) + createParamsPart(params) + "onevent: " + customOnEvent + ", 'javax.faces.behavior.event':'" + customEventName + "'});";
    }

    private String createRenderPart(final String render) {
        if (StringUtils.isNotEmpty(render)) {
            return "render: '" + render + "', ";
        }

        return "";
    }

    private String createParamsPart(final String params) {
        if (StringUtils.isNotEmpty(params)) {
            return "params: " + params + ", ";
        }

        return "";
    }

    public List getRenderIds() {
        return renderIds;
    }

    private String createRender(final List additionalRenderIds) {
        final StringBuilder render = new StringBuilder();

        if (!additionalRenderIds.isEmpty()) {
            final Iterator iterator = additionalRenderIds.iterator();

            while (iterator.hasNext()) {
                render.append(iterator.next());

                if (iterator.hasNext()) {
                    render.append(" ");
                }
            }
        }

        return render.toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy