Refine search
AjaxBehavior ajaxBehavior = new AjaxBehavior(); MethodExpression methodExpression = FacesUtil.createMethodExpression( "#{formerpmain.onTabChange}", void.class, new Class<?>[]{}); ajaxBehavior.addAjaxBehaviorListener( new AjaxBehaviorListenerImpl(methodExpression)); ajaxBehavior.setListener(methodExpression); ajaxBehavior.setProcess("@parent");
private static AjaxBehavior findAjaxBehavior(Map<String, List<ClientBehavior>> behaviors, String event) { if (behaviors.containsKey(event)) { final ClientBehavior clientBehavior = behaviors.get(event).get(0); if (clientBehavior instanceof AjaxBehavior && !((AjaxBehavior) clientBehavior).isDisabled()) { return ((AjaxBehavior) clientBehavior); } } return null; } }
private Object eval(String propertyName, Object value) { if (value != null) { return value; } ValueExpression expression = getValueExpression(propertyName); if (expression != null) { FacesContext ctx = FacesContext.getCurrentInstance(); return expression.getValue(ctx.getELContext()); } return null; }
/** * @since 2.2 */ public boolean isResetValuesSet() { return (getStateHelper().get(ATTR_RESET_VALUES) != null) || (getValueExpression(ATTR_RESET_VALUES) != null); }
public Object eval(Serializable key) { Object returnValue = _fullState.get(key); if (returnValue != null) { return returnValue; } ValueExpression expression = _target.getValueExpression(key .toString()); if (expression != null) { return expression.getValue(_target.getFacesContext() .getELContext()); } return null; }
/** * Create an ajax behavior which should invoke an ajax listener method expression based on the given EL expression. * The target method must take an {@link AjaxBehaviorEvent} as argument. * As an example, the following ajax listener example, * <ul> * <li><code>public void ajaxListener(AjaxBehaviorEvent event)</code></li> * </ul> * <p>can be created as follows: * <ul> * <li><code>createAjaxBehavior("#{bean.ajaxListener}");</code></li> * </ul> * <p>Note that this is essentially the programmatic equivalent of <code><f:ajax></code>. So if you intented * to create for example a <code><p:ajax></code> programmatically, then don't use this method. * @param expression The EL expression to be invoked when the created ajax behavior is processed. * @return The created ajax behavior, ready to be used as * {@link UIComponentBase#addClientBehavior(String, ClientBehavior)} whereby the string argument represents the * client event name, such as "action", "valueChange", "click", "blur", etc. */ public static AjaxBehavior createAjaxBehavior(String expression) { FacesContext context = FacesContext.getCurrentInstance(); AjaxBehavior behavior = (AjaxBehavior) context.getApplication().createBehavior(AjaxBehavior.BEHAVIOR_ID); MethodExpression method = createVoidMethodExpression(expression, AjaxBehaviorEvent.class); behavior.addAjaxBehaviorListener(event -> method.invoke(getELContext(), new Object[] { event })); return behavior; }
private AjaxBehavior createAjaxBehavior(FaceletContext ctx, String eventName) { Application application = ctx.getFacesContext().getApplication(); AjaxBehavior behavior = (AjaxBehavior)application.createBehavior( AjaxBehavior.BEHAVIOR_ID); setBehaviorAttribute(ctx, behavior, this.onevent, String.class); setBehaviorAttribute(ctx, behavior, this.onerror, String.class); setBehaviorAttribute(ctx, behavior, this.disabled, Boolean.class); setBehaviorAttribute(ctx, behavior, this.immediate, Boolean.class); setBehaviorAttribute(ctx, behavior, this.resetValues, Boolean.class); setBehaviorAttribute(ctx, behavior, this.execute, Object.class); setBehaviorAttribute(ctx, behavior, this.render, Object.class); setBehaviorAttribute(ctx, behavior, this.delay, String.class); if (null != listener) { behavior.addAjaxBehaviorListener(new AjaxBehaviorListenerImpl( this.listener.getMethodExpression(ctx, Object.class, new Class[] { AjaxBehaviorEvent.class }), this.listener.getMethodExpression(ctx, Object.class, new Class[] { }))); } return behavior; }
this(component.getClientId(), true); if (!ajaxBehavior.isDisabled()) { if (ajaxBehavior.getExecute() != null) { execute = convertStringListToJoinedString(ajaxBehavior.getExecute(), component); if (ajaxBehavior.getRender() != null) { render = convertStringListToJoinedString(ajaxBehavior.getRender(), component); if (ajaxBehavior.getOnevent() != null) { this.addOnEventHandler(ajaxBehavior.getOnevent()); if (ajaxBehavior.getOnerror() != null) { this.addOnErrorHandler(ajaxBehavior.getOnerror()); if (StringUtils.isNotEmpty(ajaxBehavior.getDelay())) { delay = ajaxBehavior.getDelay(); resetValues = ajaxBehavior.isResetValues(); } catch (NoSuchMethodError e) {
protected void changeClientBehaviorIds(ClientBehavior clientBehavior, String id) { // Determine whether or not the developer added an f:ajax child tag. if (clientBehavior instanceof AjaxBehavior) { // Add the element Id to the list of components that participate in the "execute" portion // of the JSF partial request lifecycle. AjaxBehavior ajaxBehavior = (AjaxBehavior) clientBehavior; Collection<String> execute = new ArrayList<String>(); execute.addAll(ajaxBehavior.getExecute()); if (execute.contains("@this") || !execute.contains(id)) { execute.add(id); ajaxBehavior.setExecute(execute); } // Add the element Id to the list of components that participate in the "render" portion // of the JSF partial request lifecycle. Collection<String> render = new ArrayList<String>(); render.addAll(ajaxBehavior.getRender()); if (render.contains("@this")) { render.remove("@this"); render.add(id); ajaxBehavior.setRender(render); } } }
private AjaxBehavior createReloadBehavior(final UISheet sheet) { final AjaxBehavior reloadBehavior = findReloadBehavior(sheet); final ArrayList<String> renderIds = new ArrayList<>(); if (!renderIds.contains(sheet.getId())) { renderIds.add(sheet.getId()); } if (reloadBehavior != null) { renderIds.addAll(reloadBehavior.getRender()); } final ArrayList<String> executeIds = new ArrayList<>(); if (!executeIds.contains(sheet.getId())) { executeIds.add(sheet.getId()); } if (reloadBehavior != null) { executeIds.addAll(reloadBehavior.getExecute()); } final AjaxBehavior behavior = new AjaxBehavior(); behavior.setExecute(executeIds); behavior.setRender(renderIds); behavior.setTransient(true); return behavior; }
@Override public Object saveState(FacesContext context) { if (context == null) { throw new NullPointerException(); } Object[] values; Object superState = super.saveState(context); if (initialStateMarked()) { if (superState == null) { values = null; } else { values = new Object[] { superState }; } } else { values = new Object[10]; values[0] = superState; values[1] = onerror; values[2] = onevent; values[3] = disabled; values[4] = immediate; values[5] = resetValues; values[6] = delay; values[7] = saveList(execute); values[8] = saveList(render); values[9] = saveBindings(context, bindings); } return values; }
@Override public Collection<String> getRender() { return getWrapped().getRender(); }
@Override public Collection<String> getExecute() { return getWrapped().getExecute(); }
private void encodeAjaxEvent(final HtmlTree tree, final ResponseWriter writer, final String eventName, final String trivialCallback) throws IOException { final AjaxBehavior ajaxBehavior = ClientBehaviorResolver.findFirstActiveAjaxBehavior(tree, eventName); if (ajaxBehavior != null) { writer.writeText("trivialTree." + trivialCallback + ".addListener(function(node) {", null); final String ajaxRequest = new JsfAjaxRequest(tree.getClientId(), true) .setEvent(eventName) .setRender(tree, eventName) .setParams("node.id") .addOnEventHandler(ajaxBehavior.getOnevent()) .addOnErrorHandler(ajaxBehavior.getOnerror()) .setBehaviorEvent(eventName).toString(); writer.writeText(ajaxRequest, null); writer.writeText("});", null); } }
private static boolean isImmediate(UIComponent component, AjaxBehavior ajaxBehavior) { boolean immediate = false; if (ajaxBehavior.isImmediateSet()) { immediate = ajaxBehavior.isImmediate(); } else if (component instanceof EditableValueHolder) { immediate = ((EditableValueHolder)component).isImmediate(); } else if (component instanceof ActionSource) { immediate = ((ActionSource)component).isImmediate(); } return immediate; }
protected void validateClientBehavior(final ValidationContext context, final ClientBehaviorHolder component, final String behaviourEvent, final ClientBehavior behavior) { if (behavior instanceof AjaxBehavior) { AjaxBehavior ajaxBehavior = (AjaxBehavior) behavior; Collection<String> executeIds = ajaxBehavior.getExecute(); Collection<String> renderIds = ajaxBehavior.getRender(); String clientId = ((UIComponent) component).getClientId(); boolean hasNamingContainerParent = UtilsJsf.findParentNamingContainer((UIComponent) component) != null; context.acceptParameter("javax.faces.partial.ajax", "true"); context.acceptParameter("javax.faces.partial.event", "click");// TODO more valid values?? context.acceptParameter("javax.faces.behavior.event", behaviourEvent); acceptParameter(context, "javax.faces.source", clientId, hasNamingContainerParent); acceptParameter(context, "javax.faces.partial.execute", resolveClientIds((UIComponent) component, executeIds), hasNamingContainerParent); acceptParameter(context, "javax.faces.partial.render", resolveClientIds((UIComponent) component, renderIds), hasNamingContainerParent); } }
/** * <p class="changed_added_2_2"> * Set the resetValues status of this behavior.</p> * * @param resetValues the resetValues status. * * @since 2.2 */ public void setResetValues(boolean resetValues) { this.resetValues = resetValues; clearInitialState(); }
@Override public void addAjaxBehaviorListener(AjaxBehaviorListener listener) { getWrapped().addAjaxBehaviorListener(listener); }
protected boolean isInitialStateMarked() { return _target.initialStateMarked(); }
@Override public boolean isImmediate() { return getWrapped().isImmediate(); }