Estoy tratando de mostrar un bloque solo si hay mensajes globales en la cola JSF.JSF usando EL para probar la presencia de mensajes globales
Intenté usar rendered="#{not empty facesContext.getMessageList(null)}"
, pero siempre se evalúa como falso.
La única forma que encontré es crear una función EL personalizada y probarla en java.
por ejemplo. : mi EL función: la página
public static boolean isFacesGlobalMessages() {
return ! FacesContext.getCurrentInstance().getMessageList(null).isEmpty();
}
JSF:
<h:panelGroup class="block1" layout="block" rendered="#{el:isFacesGlobalMessages()}">
<div class="block-warn-body">
<rich:messages id="msg" globalOnly="true"/>
</div>
</h:panelGroup>
estoy usando Mojarra 2.1.5.
Me estoy perdiendo algo? Gracias!
Editar: probado las siguientes sugerencias, pero sin suerte hasta ahora:
#{not empty facesContext.getMessageList(null)}
-> siempre falsas#{! facesContext.getMessageList(null)}
-> error#{! empty facesContext.getMessageList(null)}
-> siempre falsas#{fn:length(facesContext.getMessageList(null)) > 0}
-> siempre falso#{not empty facesContext.messageList(null)}
-> Error: Método mensajeLista no encontrada#{not empty facesContext.messageList}
-> devuelve cierto si se trata de un error de validación (que sólo quieren cierto en caso de error global)#{! facesContext.getMessageList(null).isEmpty()}
-> tiros IllegalAccessException: Clase javax.el.BeanELResolver no puede acceder a un miembro de la clase java.util.Collections $ UnmodifiableCollection con modificadores de "público"
¿Intentó escribirlo de la misma manera que en su función? EL es consciente de! operador. – Paranaix
¡Gracias! Acabo de probar (ver la edición anterior), pero no funcionó – gonzalad
@gonzalad, no sé si es bueno para usted, pero actualicé mi respuesta ... – Daniel