prime outcome link iconpos icon faces jsf primefaces

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.

  1. 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>

  2. 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.