6 Stimmen

Färben Sie die Zeilen der Datentabelle basierend auf einer Bedingung in JSF 2.

Ich möchte die Hintergrundfarbe der Zeilen basierend auf einer Bedingung ändern.

Wenn der Wert von "entry.action" X ist, möchte ich "history-table-row-incomplete" (Name der Styleclass) verwenden, wenn der Wert Y ist, möchte ich "history-table-row-error" (Name der Styleclass) verwenden. Alle anderen Fälle sollten den Standardwert verwenden.

Ich denke, ich muss das aktuelle Objekt von entry irgendwie in meinem Bean bekommen, es analysieren und einen String mit dem Namen der Styleclass zurückgeben, um die Farbe zu ändern. Aber ich weiß nicht wie... (Ich bin neu in JSF...)

Kann mir bitte jemand helfen?

12voto

BalusC Punkte 1034465

Verwenden Sie das rowStyleClass-Attribut des anstelle von rowClasses. Das rowStyleClass wird auf einer pro-Zeilen-Basis ausgewertet, wenn var="entry" verfügbar ist, während rowClasses nur auf einer pro-Tabelle-Basis ausgewertet wird.

1 Stimmen

Dies führt zu einem Parsefehler. Ich muss sagen, dass ich myfaces 2.1.5 verwende. Gibt es einen Weg, um den Wert von extry.action in meinen Bean zu bekommen, um ihn dort zu verarbeiten?

0 Stimmen

RowStyleClass="#{entry.action == 'F' ? 'history-table-row-error' : (entry.action == 'Y' ? 'history-table-row-error' : '') : ''}" Fehler beim Parsen: #{entry.action == 'F' ? 'history-table-row-error' : (entry.action == 'Y' ? 'history-table-row-error' : '') : ''} Verursacht durch: org.apache.el.parser.ParseException - Auf " ":" ": "" in Zeile 1, Spalte 108 gestoßen. Erwartet wurde eine der folgenden Optionen: "}" ... "." ... "[" ... ">" ... "gt" ... "<" ... "lt" ... ">=" ... "ge" ... "<=" ... "le" ... "==" ... "eq" ... "!=" ... "ne" ... "&&" ... "and" ... "||" ... "or" ... "*" ... "+" ... "-" ... "/" ... "div" ... "%" ... "mod"

1 Stimmen

Ich hatte einen Syntaxfehler in meiner ersten Antwort. Bitte überprüfen Sie das aktualisierte Beispiel, das ich vor 12 Minuten gepostet habe.

-2voto

bchetty Punkte 2203

Sie können den JSF EL Ternary Operator wie folgt verwenden:

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

2 Stimmen

Der styleClass wird auf`

angewendet, nicht auf .`

0 Stimmen

Jemand hat meinen Beitrag negativ bewertet! Vielleicht habe ich nicht genau das 'Attribute' verwendet, aber mein Ziel war es, dem OP zu erklären, wie man es mit EL und ternärem Operator implementiert.

3 Stimmen

Hä? OP fragte "Ich möchte die Hintergrundfarbe der Zeilen basierend auf einer Bedingung ändern.". Diese Antwort beantwortet das nicht. Also ist diese Antwort falsch. So einfach ist das. Schalte sie einfach um oder lösche sie, wenn es dich stört. Ich verstehe beim besten Willen nicht, warum falsche Antworten hochgewertet werden sollten. Es würde den Sinn von Stack Overflow komplett zerstören.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X