public static String buildBehaviorChain()

in myfaces-html5-core/src/main/java/org/apache/myfaces/html5/renderkit/util/Html5RendererUtils.java [478:521]


    public static String buildBehaviorChain(FacesContext facesContext,
                                            UIComponent uiComponent,
                                            String eventName, Collection<ClientBehaviorContext.Parameter> params,
                                            Map<String, List<ClientBehavior>> clientBehaviors,
                                            String userEventCode, String serverEventCode) {
        ExternalContext externalContext = facesContext.getExternalContext();
        List<String> finalParams = new ArrayList<String>(3);
        if(StringUtils.isNotBlank(userEventCode)){
            // escape every ' in the user event code since it will
            // be a string attribute of jsf.util.chain
            finalParams.add('\'' + escapeJavaScriptForChain(userEventCode) + '\'');
        }

        ScriptContext behaviorCode = new ScriptContext();
        ScriptContext retVal = new ScriptContext();

        getClientBehaviorScript(facesContext, uiComponent, eventName, clientBehaviors,
                behaviorCode, params);
        if (behaviorCode!=null && StringUtils.isNotBlank(behaviorCode.toString())) {
            finalParams.add(behaviorCode.toString());
        }
        if (StringUtils.isNotBlank(serverEventCode)) {
            finalParams.add('\'' + escapeJavaScriptForChain(serverEventCode) + '\'');
        }
        Iterator<String> it = finalParams.iterator();

        // It's possible that there are no behaviors to render.  For example, if we have
        // <f:ajax disabled="true" /> as the only behavior.

        if (it.hasNext()) {
            //according to the spec jsf.util.chain has to be used to build up the behavior and scripts
            retVal.append("jsf.util.chain(document.getElementById('"
                    + uiComponent.getClientId(facesContext) + "'), event,");
            while (it.hasNext()) {
                retVal.append(it.next());
                if (it.hasNext()) {
                    retVal.append(", ");
                }
            }
            retVal.append(");");
        }

        return retVal.toString();
    }