# richfaches:datascroller mit request-scope



## frank_b (4. Sep 2008)

Hi, ich möchte den richfaches:datascroller benutzen um in einer Datentabelle blättern zu können. Das ganze funktioniert auch: 

<rich:datascroller for="userData" maxPages="5"/>

<rich:dataTable id="userData" value="#{myBean.users}" var="row" rows="10">
     <rich:column>
          <hutputText value="#{row.name}"/>
      </rich:column>                    
</rich:dataTable>

Mein Problem ist jetzt folgendes: Das Blättern funktioniert nur wenn ich die den manged-bean-scope der Bean "myBean" auf "session" stelle. Wenn ich den scope auf "request" stelle dann ist es nicht mehr möglich zu blättern.

Hat jemand Erfahrung mit dem richfaces:datascroller? Gibt es eine Möglichkeit "request" scope für den datascroller zu verwenden?

Für Lösungsvorschläge wäre ich recht dankbar!


----------



## maki (4. Sep 2008)

Dir ist die Bedeutung des request scopes bekannt?

Wenn ja, wirst du ja einsehen das es keinen Sinn ergibt einen Datascroller bzw. irgendetwas das *mehr als einen Aufruf braucht* mit einer Bean zu verwenden die nur den reqeest scope hat.

Klar, die Standard scopes sind ziemlich grob, es gibt Frameworks die mehr haben, zB. shale und seam, da gibt es einen dialog bzw. conversation scope.


----------



## frank_b (4. Sep 2008)

Die Bedeutung eines request scopes wäre mir eigentlich bekannt. 
Aber es muss doch irgendeine Möglichkeit in JSF geben sich Daten in einer Tabelle in mehreren Pages geteilt anzeigen zu lassen ohne dass sich die Daten für die ganze Session im Arbeitsspeicher befinden. 

Bei mehreren 1000 Datensätzen und Benutzern würde der Speicherbedarf extrem hoch sein.

Gibts irgendeine Möglichkeit das Problem zu lösen?


----------



## maki (4. Sep 2008)

> Die Bedeutung eines request scopes wäre mir eigentlich bekannt.


Dann solltest du dich ja eigentlich nicht wundern 



> Aber es muss doch irgendeine Möglichkeit in JSF geben sich Daten in einer Tabelle in mehreren Pages geteilt anzeigen zu lassen ohne dass sich die Daten für die ganze Session im Arbeitsspeicher befinden.
> 
> Bei mehreren 1000 Datensätzen und Benutzern würde der Speicherbedarf extrem hoch sein.
> 
> Gibts irgendeine Möglichkeit das Problem zu lösen?


Hab ich doch gesagt, es gibt frameworks die mehr scopes anbieten, kannst dir natürlich auch selbst einen schreiben.

Du musst ja nicht gleich alle Daten in die Sesion holen, die angezeigten würden ja reichen, die anderen kannst du bei Bedarf holen.
Der ValueListHandler war mal ein Muster von Sun um dieses Problem zu lösen.


----------



## frank_b (4. Sep 2008)

Danke für den Tip. Ich werde mal versuchen das ich das mit einem ValueListHandler hinbekomme.

In den Zusammenhang hat sich mir noch eine Frage gestellt: Wie kann ich erreichen das beim Aufruf einer bestimmten JSF Seite mit scope "session" immer eine bestimmte Methode aufgerufen wird (damit ich zum Beispiel eine DataTable mit Daten laden kann). Der Konstruktur wird ja nur beim ersten Mal aufgerufen also kann ich diesen nicht dafür verwenden.

Funktioniert das mittels eines Filters oder welche Möglichkeiten gibt es da?


----------



## maki (5. Sep 2008)

Dafür würde shale von haus aus Unterstützung bieten, oder du schreibst dir einen PhaseListener, der das macht.


----------



## Guest (6. Feb 2009)

Das funtioniert auch im Request scope.
Setzte einfach in deine jsp folgendes ein:

<a4j:keepAlive beanName="myBean"></a4j:keepAlive>

Dann wird der request gehalten.


----------

