2011-12-06 17 views
7

quiero cambiar el valor de la variable en base a una condición así que trató lo siguiente:condicional definición de la variable en JSF

<h:head> 

    <ui:param name="userCase" value="Insert" /> 

    <ui:fragment rendered="#{employee.employeesBulkInsert==false}"> 
     <ui:param name="userCase" value="Update" /> 
    </ui:fragment> 

     <title>#{userCase} Employee </title> 

</h:head> 

pero no funciona en el caso de actualización, se muestra una cadena vacía, alguna idea por qué?

sé que hay otras soluciones como definir la variable en el bean de respaldo, o hacer el fragmento de ui condicional en la etiqueta de título directamente, pero quiero saber por qué lo anterior no funciona, por favor asesórese, gracias.

+0

Es muy buena práctica para decir cuál es el comportamiento que está experimentando (un error? ¿Cuál es el mensaje? No es la salida se puede esperar? Lo que se estaban esperando?), no solo "no funciona". – Gian

+0

seguro, actualizaré la pregunta :) –

Respuesta

13

El <ui:fragment> es una etiqueta render en tiempo mientras que el <ui:param> es un controlador de etiqueta (controladores de etiquetas son fácilmente reconocibles por la ausencia de la rendered atributo). Por lo tanto, cuando se construye la vista, se establece <ui:param>, independientemente del resultado de <ui:fragment>. El atributo rendered de <ui:fragment> solo se evalúa cuando se va a representar la vista ya construida.

Desea realizar la condición utilizando un controlador de etiquetas en su lugar, como JSTL <c:if>.

<ui:param name="userCase" value="Insert" /> 

<c:if test="#{not employee.employeesBulkInsert}"> 
    <ui:param name="userCase" value="Update" /> 
</c:if> 

(en cuenta que he quitado la innecesaria booleano ==false comparación)

Cuestiones relacionadas