2012-06-04 172 views
6

de PrimeFaces permite especificar un icono:PrimeFaces CommandButton: activar de forma dinámica/desactivar el icono CommandButton

<p:commandButton value="Press me" icon="redBall" ... /> 

Sin embargo, necesito para activar/desactivar el icono dependiendo de una propiedad de bean JSF logró.

me trataron

<p:commandButton value="Press me" icon="#{bean.iconClass}" ... /> 

Esto funciona para la elección de diferentes iconos, pero no permite desactivar el icono por completo (es decir, obtener la misma prestación como sin el atributo icon=). Puedo devolver una cadena vacía en getIconClass(), pero PrimeFaces todavía representará el <span> adicional para el icono dentro del botón, y el estilo CSS hace que este lapso sea visible con un icono predeterminado.

¿Hay una manera de contar PrimeFaces "Quiero ningún icono en absoluto" (aparte de sacar la icon= atribuir por completo)?

+0

tratar de volver '' null' en getIconClass() ' – Daniel

+0

@ Daniel: Eso no parece funcionar. Si hago eso, el icono predeterminado aún se muestra. Aparentemente, el 'null' se traduce a' "" 'dentro de JSF. – sleske

Respuesta

6

Puedo pensar en 2 formas sin duplicar el botón.

  1. Supply el icono como <f:attribute> que se añade 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. Establecer una clase de estilo que oculta el icono de conjunto y los dan de forma condicional.

    .hideicon .ui-icon { display: none; } 
    .hideicon .ui-button-text { padding-left: 1em; } 
    

    con

    <p:commandButton ... icon="#{bean.icon}" styleClass="#{empty bean.icon ? 'hideicon' : ''}" /> 
    
+0

Hm, utilizando parece problemático, podemos luego decidir utilizar Stateless JSF (http://industrieit.com/blog/2011/11/stateless-jsf-high-performance-zero-per-request-memory-overhead/) y eso no funcionaría con . El truco de CSS parece un poco feo, pero es probablemente la mejor idea. – sleske

+1

Ese enfoque sin estado debería funcionar teóricamente si la condición '' tiene una vista de ámbito y no solicita un ámbito. Si puede cambiar en cada solicitud mientras se reutiliza la misma vista, entonces no funcionará en JSF sin estado. – BalusC

+0

Por ahora usaremos el enfoque de CSS descrito anteriormente. Parecía la opción menos intrusiva. ¡Gracias! – sleske

2

Una solución provisional sería tener 2 botones de comando. Uno con definición de icono y otro sin. Y luego renderiza el correcto.

+0

Sí, eso debería funcionar, pero no es una buena solución, debido a la redundancia. – sleske

+0

Es cierto. Las soluciones CSS de BalusC no me parecen feas. – roel

Cuestiones relacionadas