2012-11-20 6 views
6

Vorrei accedere a un bean gestito con scope view all'interno di un Servlet.Come accedere ai bean gestiti da @ViewScoped da Servlet?

ho cercato domanda simile e ottenuto questi:

how to get beans from view scope che utilizza FacesContext.getCurrentInstance(), inapplicabile all'interno di un servlet perché dovrebbe dare un risultato nullo

JSF - get managed bean by name che tratta tutti gli altri ambiti, ma non Viewscope

Ho intenzione di pensare che non sia possibile, vero?

C'è la soluzione semplice per cambiare l'ambito del bean all'ambito della sessione ma è un'ultima possibilità perché sono preoccupato dal consumo di memoria.

La mia ultima necessità è la seguente: il beanbean contiene alcuni dati visualizzati in un dataTable. La stessa pagina dovrebbe includere l'immagine (obbligatoria) della rappresentazione grafica di tali dati. L'immagine può essere prodotta da un servlet ma deve accedere ai dati o ricaricarli dal db.

Ho anche provato lo <p:graphicImage> da PrimeFaces 2.X ma non è compatibile con i bean di viewscope. Qualche suggerimento?

risposta

6

Questo non è possibile, no. L'ambito della vista è legato a una specifica vista JSF, che non è un mezzo in una semplice richiesta servlet HTTP. Si noti che non è possibile accedere ai bean con scope della richiesta concreta durante una semplice richiesta servlet HTTP, restituiscono sempre null.

L'ambito della sessione è il migliore che si possa ottenere. Puoi semplicemente rimuovere l'attributo dall'ambito della sessione una volta che hai finito con esso nel servlet.

session.removeAttribute("somename"); 
+0

Ovunque io abbia una domanda relativa a JSF, so che posso contare su di voi. Grazie – Filippo

+0

Prego :) – BalusC

+0

> BalusC ha detto: "Notare che non è possibile accedere ai bean con scope delle richieste concrete durante una semplice richiesta servlet HTTP ..." Potrebbe spiegare perché? Grazie. –