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;
}