Bedingte Anzeige von JSF-Komponenten


79

Erstens bin ich neu in Java EE und habe einen starken ASP .NET-Entwicklungshintergrund. Ich bin durch das Netz gegangen, und ich könnte dies vermissen, aber es scheint, dass es keine einfachen und direkten Tutorials gibt, wie ich die Backing-Bean-Klasse mit einer JSF-Komponente verbinden kann.

Ein gutes Beispiel ist wie folgt: Derzeit versuche ich, eine JSF-Seite zu erstellen, auf der eine Reihe von Links als Menüleiste und eine Reihe von Formularen vorhanden sind. Was ich vorhabe, ist, wenn ich auf einen Link klicke, wird ein bestimmtes Formular gerendert.

In ASP.NET konnte ich das Element leicht abrufen und dann festlegen, dass das Attribut angezeigt werden kann. Ich frage mich, ob es in JSF einen einfachen Weg gibt (zum Teufel, auch keinen).

Das Formular befindet sich bereits auf der Seite. Es geht lediglich darum, das Attribut "Rendern" auf "true" zu setzen, wenn ich auf einen bestimmten Link klicke.

Antworten:


158

Ja, verwenden Sie das renderedAttribut.

<h:form rendered="#{some boolean condition}">

Normalerweise binden Sie es an das Modell, anstatt das Modell die Komponente greifen und manipulieren zu lassen.

Z.B

<h:form rendered="#{bean.booleanValue}" />
<h:form rendered="#{bean.intValue gt 10}" />
<h:form rendered="#{bean.objectValue eq null}" />
<h:form rendered="#{bean.stringValue ne 'someValue'}" />
<h:form rendered="#{not empty bean.collectionValue}" />
<h:form rendered="#{not bean.booleanValue and bean.intValue ne 0}" />
<h:form rendered="#{bean.enumValue eq 'ONE' or bean.enumValue eq 'TWO'}" />

Beachten Sie die Bedeutung der Keyword - basierte EL Operatoren wie gt, ge, leund ltstatt >, >=, <=und <als spitze Klammern <und >sind in XML - reservierte Zeichen. Siehe auch diese verwandten Fragen und Antworten: Fehler beim Parsen von XHTML: Der Inhalt von Elementen muss aus wohlgeformten Zeichendaten oder Markups bestehen .

Nehmen wir für Ihren speziellen Anwendungsfall an, dass der Link einen Parameter wie den folgenden übergibt:

<a href="page.xhtml?form=1">link</a>

Sie können das Formular dann wie folgt anzeigen:

<h:form rendered="#{param.form eq '1'}">

( #{param}Dies ist ein implizites EL-Objekt, das sich auf eine MapDarstellung der Anforderungsparameter bezieht. )

Siehe auch:


13

Zusätzlich zum vorherigen Beitrag können Sie haben

<h:form rendered="#{!bean.boolvalue}" />
<h:form rendered="#{bean.textvalue == 'value'}" />

Jsf 2.0


1
Eine so kleine Ergänzung ist keine gesonderte Antwort wert.
Karl Richter
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.