2012-01-05 37 views
5

Me gustaría cambiar el color de fondo de las filas según una condición.Colorea las filas de la tabla de datos según una condición en JSF 2

<t:dataTable id="data" 
       styleClass="history-table" 
       headerClass="history-table-header" 
       rowClasses="history-table-row-default" 
       border="2" cellpadding="5" cellspacing="2" 
       var="entry" 
       value="#{historyBean.logEntryList}" 
       preserveDataModel="false" 
       rows="#{historyBean.history.rowCount}" 
       sortable="true"> 

      <h:column> 
       <f:facet name="header"> 
       <h:outputText value="Debug Status" /> 
       </f:facet> 
       <h:outputText value="#{entry.action}" /> 
      </h:column> 

Si el valor de "entry.action" está XI gusta usar "historia-table-row-incompleta" (nombre de styleClass), si el valor es YI gusta usar "la historia -table-row-error "(nombre de estilo). Todos los demás casos deben usar el valor predeterminado.

Supongo que tengo que obtener de alguna manera el objeto actual de entrada a mi bean, analizarlo y devolver una cadena con el nombre de la clase de estilo para dar salida al texto para cambiar el color. Pero no sé cómo ... (Soy nuevo en JSF ...)

¿Alguien me puede ayudar, por favor?

Respuesta

11

Utilice el atributo rowStyleClass del <t:dataTable> en lugar de rowClasses. El rowStyleClass se evalúa por filas, donde var="entry" está disponible, mientras que rowClasses solo se evalúa por tabla.

<t:dataTable ... rowStyleClass="#{entry.action == 'X' ? 'history-table-row-incomplete' : (entry.action == 'Y' ? 'history-table-row-error' : 'history-table-row-default')}"> 
+1

Esta causar un error de análisis. Tengo que decir que uso mis caras 2.1.5. ¿Hay alguna manera de obtener el valor de extry.action en mi bean para manejarlo allí? –

+0

Por favor, mencione el mensaje de error de análisis exacto. – BalusC

+0

rowStyleClass = "# {entry.action == 'F'? 'History-table-row-error': (entry.action == 'Y'? 'History-table-row-error': ''): ' '} "Análisis de errores: # {entry.action ==' F '? 'history-table-row-error': (entry.action == 'Y'? 'history-table-row-error': ''): ''} Causado por: org.apache.el.parser .ParseException - Encountered "": "": "" en la línea 1, columna 108. Estaba esperando uno de: "}" ... "." ... "[" ... ">" ... "gt" ... "<" ... "lt" ... "> =" ... "ge" ... "<=" ... "le" ... "==" ... "eq" ... "! =" ... "ne" ... "&&" ... "y" ... "|| " ... "o" ... "*" ... "+" ... "-" ... "/" ... "div" ... "%" ... "mod" –

-1

Puede utilizar JSF EL operador ternario, como a continuación:

rowStyleClass="#{entry.action eq X ? 'history-table-row-incomplete' : (entry.action eq Y ? 'history-table-row-error' : 'default')}" 
+1

El 'styleClass' se aplica en'

', no en' '. – BalusC

+0

¡Alguien ha negado mi publicación! Puede que no haya usado exactamente el 'atributo', pero mi punto fue hacer que el OP entendiera cómo implementarlo con EL y el operador ternario. – bchetty

+2

¿Huh? OP preguntó * "Me gustaría cambiar el color de fondo de las filas según una condición". *. Esta respuesta no responde eso. Entonces esta respuesta es incorrecta. Simple como eso. Solo corrige o elimínalo si te molesta. No puedo entender de por vida por qué las respuestas incorrectas deberían ser votadas. Destruiría por completo el punto de desbordamiento de pila. – BalusC

Cuestiones relacionadas