16. Juli 2009

Page Scope mit JSF

Problem: Wie kann man in JSF Listen, die z.B. von Tabellen-Controls visualisiert werden in den Page Scope legen (sprich länger als der Request Scope, aber kürzer als den Session Scope, so dass Post Backs funktionieren, ohne die Datenbinding zu verlieren) ?

Lösung:
Vor JSF 2.0 gibt es mit Apache Tomahawk die Möglichkeit den Zustand einer Request-Scope Bean

<managed-bean>
<managed-bean-name>model_application</managed-bean-name>
<managed-bean-class>
de.rfeest.demo.web.backing.ApplicationModel</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>

in den Viewstate einer Page zu setzen
<t:saveState value="#{model_application}" id="ss1"/>

und im Tabellen-Control verwenden:
<af:table emptyText="No items were found" value="#{model_application.appStatusList}" ...


Mit JSF 2.0 wird der View Scope eingeführt, der das ganze in JSF nativ integriert.