JSF-EL verschachtelten ternären operator

Habe ich JSF 2.2, PrimeFaces 5.0 web-Anwendung.

Auf meiner Seite, ich brauche um bedingt set <ui:param/>. Das problem ist, dass ein standard ternäre operator ist nicht genug, weil ich mehr als 2 Optionen zu wählen. Diese einzelne Seite dient als ein Bearbeiten und erstellen-Seite für 2 Arten von Benutzer: normale Benutzer und ein Arzt.

Hier ist, was ich versucht habe:

<ui:param name="edit_title"
    value="#{empty dto.id  ? 
(bean.isPhysician ? msg.physicianNewTitle : msg.userNewTitle) :
(bean.isPhysician ? msg.physicianEditTitle : msg.userEditTitle)}" />

Das Ergebnis zeigt falsche Titel, wenn dto.id leer ist und bean.isPhysician ist falsch und ich kann nicht finden, ein problem oder eine bessere Lösung. Versucht es bedingt, wie es war, sagte hier, aber es funktioniert nicht aus irgendeinem Grund.

Weiß jemand, wie man das lösen dieser Art von Schwierigkeiten?

Jede sinnvolle Antwort wird sehr geschätzt und bewertet.

Danke.

  • Es könnte besser sein, mehr zu bewegen, komplexe Logik in den controller. Was ist die erwartete und tatsächliche Ausgabe in deinem Beispiel?
  • Ausgabe ist ok, außer wenn ich versuche einen neuen Benutzer erstellen, es zeigt Neue Arzt statt eines Neuen Benutzers.
  • Deine Logik korrekt aussieht. Ich würde es brechen in mehrere Anweisungen für das debugging, so dass das Eingänge sind, was Sie erwarten.
  • Versuchen ? #{((leer dto.id) ? (bean.isPhysician ? msg.physicianNewTitle : msg.userNewTitle) : (bean.isPhysician ? msg.physicianEditTitle : msg.userEditTitle))} : tut mir Leid ich kann nicht helfen
InformationsquelleAutor amenoire | 2014-08-08
Schreibe einen Kommentar