jsf - outcome - primefaces icon button
PrimeFaces CommandButton: habilita/deshabilita dinĂ¡micamente el icono (2)
CommandButton de PrimeFaces permite especificar un icono:
<p:commandButton value="Press me" icon="redBall" ... />
Sin embargo, necesito habilitar / deshabilitar el icono dependiendo de una propiedad de bean administrada por JSF.
Lo intenté
<p:commandButton value="Press me" icon="#{bean.iconClass}" ... />
Esto funciona para elegir diferentes iconos, pero no permite deshabilitar el ícono por completo (es decir, obtener el mismo renderizado sin el atributo icon=
). Puedo devolver una cadena vacía en getIconClass()
, pero PrimeFaces seguirá representando el <span>
adicional para el icono dentro del botón, y el estilo CSS hace que este tramo sea visible con un ícono predeterminado.
¿Hay alguna manera de decirle a PrimeFaces "No quiero ningún ícono" (aparte de quitar el icon=
todo)?
Puedo pensar en 2 formas sin duplicar el botón.
Proporcione el icono como
<f:attribute>
que se agrega condicionalmente por<c:if>
.<p:commandButton ...> <c:if test="#{not empty bean.icon}"><f:attribute name="icon" value="#{bean.icon}" /></c:if> </p:commandButton>
Establezca una clase de estilo que oculte el ícono por completo y bríndelo condicionalmente.
.hideicon .ui-icon { display: none; } .hideicon .ui-button-text { padding-left: 1em; }
con
<p:commandButton ... icon="#{bean.icon}" styleClass="#{empty bean.icon ? ''hideicon'' : ''''}" />
Una solución coja sería tener 2 botones de comando. Uno con definición de icono y otro sin. Y luego renderiza el correcto.