![]() |
![]() |
![]() |
![]() |
|
ScopesManaged Beans müssen natürlich in einem Scope abgelegt werden. Aus frühen JSF-Tagen sind uns die Standardscopes bekannt:
Diese Scopes sind auch weiterhin gültig. Dazugekommen ist in JSF 2.0 der Viewscope. Dieser bezieht sich genau auf eine View. Beans, die in diesem Scope abgelegt werden, sind so lange gültig, wie eine View aktiv ist. Dies kann nur einen Request lang dauern, oder beliebig viele. Erst wenn auf eine andere View navigiert wird, wird dieser Scope geleert. @ManagedBean(name = "ViewScopeBean")
@ViewScoped public class ViewScopeBean { private String text; public ViewScopeBean() { int oid = this.hashCode(); System.out.println("### bin im Konstruktor, Oid: " + oid ); } ... } In obigem Listing sieht man, dass ein Bean im Viewscope angelegt wird. Damit man besser erkennen kann, dass ein Bean instantiiert wird, wird im Konstruktur eine Ausgabe eingebaut. Eingabe: <h:inputText value="#{ViewScopeBean.text}" />
<br/> Ausgabe: <h:outputText value="#{ViewScopeBean.text}" /> <br/> <br/> <h:commandButton action="stay" value="Gleiche Seite" /> <h:commandButton action="viewscope_2" value="Seitenwechsel" /> Dieses Formular zeigt das ViewScope-Bean an. Es bleibt so lange erhalten, wie auf der Seite verweilt wird. Der Button bewirkt zwar, dass eine Aktion ausgelöst wird, jedoch nicht auf eine andere Seite navigiert wird. Erst beim Navigieren auf eine andere View wird das Bean aus dem Scope genommen und beim erneuten Betreten der Seite wieder instantiiert. ConversationsLeider ist das Thema der Conversation in JSF 2.0 nicht enthalten. Der Conversation-Scope bleibt weiterhin ergänzenden Frameworks überlassen, z.B. JBoss Seam, Orchestra oder Spring Webflow. Warum dies so ist, darüber gibt es viele Gerüchte ;-)Am überzeugensten für mich ist die Aussage, dass man den Conversation Scope eher als Aufgabe einer Servletspezifikation sieht und nicht innerhalb von JSF. Naja, so ist das eben manchmal. Aber dennoch ist der Viewscope schon eine große Verbesserung und hilft uns, unsere Anwendungen besser zu bauen. Zurück zur Übersichtsseite |
|||||||||||