Übergabe von Parametern an eine view-scoped-bean in JSF
Können sich vorstellen, ich habe zwei Seiten in meiner JSF 2 Anwendung: die erste Seite zeigt eine Tabelle der Objekte (Autos oder was auch immer) und die andere Seite ist in der Lage, um die details zu einem bestimmten Objekt.
Die Tabelle Seite im anforderungsbereich weil die Objekte neu geladen werden muss jedes mal, wenn der Benutzer es anfordert. Die detail Seite ist im Hinblick auf Umfang.
Also wenn ich auf ein Objekt in der Tabelle, so wird dieses Objekt angezeigt werden soll, in der details-Seite. Mit einer Umleitung bin ich in der Lage, gehen Sie zu der Seite mit den details, aber die Details-Seite ist leer, weil eine neue View erzeugt wurde.
Ok, ich könnte sich ändern, die Rahmen der Sitzung, dies würde aber zu anderen Problemen führen, daher würde ich gerne die Seite "details" im view-scope. Gibt es eine Möglichkeit, die übergabe eines Arguments an eine neu generted view-scope-bean?
UPDATE 1
Hier ist das code-snippet mit den ersten versuchen der Verwendung von view-Parameter. Wie kommentierte dies nicht funktioniert. Der Wert übergeben bekommt als request-parameter, sondern in der Ziel-Seite den Wert null hat.
Tabelle Seite:
<h:button value="Go to details" outcome="targetPage">
<f:param name="carId" value="This is a test" />
</h:button>
Details Seite:
<f:metadata>
<f:viewParam name="carId" value="#{bean.id}" />
<f:event type="preRenderView" listener="#{bean.loadData}"/>
</f:metadata>
Bean-details Seite:
private String id;
public String getId() {
return id;
}
public void setId( String id ) {
this.id = id;
}
public void loadData() {
System.out.println( "Id: " + id );
}
UPDATE 2
Habe ich gefunden, mein Fehler. Die Metadaten Teil war innerhalb einer Vorlage-Datei. Wenn ich den tag auf der main-Datei für die Detail-Seite funktioniert es. Ich danke Ihnen sehr.
InformationsquelleAutor Metalhead89 | 2014-01-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
View Parameter ist der richtige Weg für Ihren Fall. Sie nicht wirklich brauchen, um eine UMLEITUNG durchzuführen, sondern einen einfachen GET-request:
Diesem Punkt wird Ihnen an diese Adresse: carDetails.xhtml?carId=1
Danach, in Ihrem carDetails.xhtml Seite, nehmen Sie die view-param und laden Sie die info für das Auto:
Wo
CarDetailBean#loadData
nur lädt die Informationen für Ihr Auto, um die Anzeige mit der angegebenen id, die bereits in der Bohne.Siehe auch:
Bearbeiten können Sie Ihre Frage mit dem code hast du jetzt?
Diese funktioniert perfekt.
InformationsquelleAutor Xtreme Biker