private static boolean getClientBehaviorScript()

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


    private static boolean getClientBehaviorScript(FacesContext facesContext,
                                                   UIComponent uiComponent, String eventName,
                                                   Map<String, List<ClientBehavior>> clientBehaviors,
                                                   ScriptContext target, Collection<ClientBehaviorContext.Parameter> params) {
        if (!(uiComponent instanceof ClientBehaviorHolder)) {
            target.append(StringUtils.EMPTY);
            return false;
        }

        ExternalContext externalContext = facesContext.getExternalContext();

        boolean renderClientBehavior = MapUtils.isNotEmpty(clientBehaviors);
        if (!renderClientBehavior) {
            target.append(StringUtils.EMPTY);
            return false;
        }

        List<ClientBehavior> attachedEventBehaviors = clientBehaviors
                .get(eventName);
        if (attachedEventBehaviors == null
                || attachedEventBehaviors.size() == 0) {
            target.append(StringUtils.EMPTY);
            return false;
        }

        ClientBehaviorContext context = ClientBehaviorContext
                .createClientBehaviorContext(facesContext, uiComponent,
                        eventName, uiComponent.getClientId(facesContext),
                        params);


        boolean submitting = false;
        Iterator<ClientBehavior> clientIterator = attachedEventBehaviors
                .iterator();
        while (clientIterator.hasNext()) {
            ClientBehavior clientBehavior = clientIterator.next();
            String script = clientBehavior.getScript(context);

            // The script _can_ be null, and in fact is for <f:ajax disabled="true" />

            if (script != null) {
                //either strings or functions, but I assume string is more appropriate since it allows access to the
                //origin as this!
                target.append("'" + escapeJavaScriptForChain(script) + "'");
                if (clientIterator.hasNext()) {
                    target.append(", ");
                }
            }
            if (!submitting) {
                submitting = clientBehavior.getHints().contains(ClientBehaviorHint.SUBMITTING);
            }
        }
        return submitting;
    }