public static <T extends ICrudDataAction<?, ?>, E extends IBaseEntity> CommandLink createCommandLink(T action, E entity, String id, String title, StyleClassMasterType styleClass, String nameMethod, Class<? extends Predicate> predicateRendered, Class<? extends Predicate> predicateDisabled) { CommandLink commandLink = new CommandLink(); commandLink.setId("commandLinkDynamic_" + id); commandLink.setValue(BundleUtils.messageBundle(title)); commandLink.setStyleClass(styleClass.getStyleClass()); commandLink.setStyle(STYLE_COMMANDLINK); commandLink.setUpdate("@composite, @(.base-messageheader)"); commandLink.setOnstart("showMessageProcess(true)"); commandLink.setOnerror("hideMessageProcess(false)"); commandLink.setOncomplete("hideMessageProcess(false)"); String methodExpressionLanguage = "" + "#{" + action.getClass().getSimpleName().substring(0, 1).toLowerCase() + action.getClass().getSimpleName().substring(1) + ".callMethodDynamic('" + nameMethod + "')}"; commandLink.setActionExpression(createMethodExpression(methodExpressionLanguage)); evaluateRenderDisabled(entity, commandLink, predicateRendered, predicateDisabled); return commandLink; }