2012-11-20 18 views
6

Chciałbym uzyskać dostęp do fasoli zarządzanej z zasięgiem widoku w serwletu.Jak uzyskać dostęp do zarządzanych komponentów bean @ViewScoped z serwletów?

Szukałem podobnego pytania i dostał tych co:

how to get beans from view scope który wykorzystuje FacesContext.getCurrentInstance(), nie ma zastosowania wewnątrz serwletu ponieważ powinien dać zerowy wynik

JSF - get managed bean by name która traktuje wszystkie inne zakresy, ale nie viewscope

Zamierzam myśleć, że to niemożliwe, prawda?

Istnieje proste rozwiązanie do zmiany zakresu komponentu bean na zakres sesji, ale jest to ostatnia szansa, ponieważ niepokoi mnie zużycie pamięci.

Moja ostatnia potrzeba jest następująca: zarządzający zawiera niektóre dane wyświetlane w dataTable. Ta sama strona powinna zawierać obraz (obowiązkowy) reprezentacji wykresu tych danych. Obraz może być utworzony przez serwlet, ale musi uzyskać dostęp do danych lub przeładować je z bazy danych.

Próbowałem również <p:graphicImage> z PrimeFaces 2.X, ale nie jest kompatybilny z ziarnami widoku. Jakieś sugestie?

Odpowiedz

6

To niemożliwe, nie. Zasięg widoku jest powiązany z określonym widokiem JSF, co nie ma znaczenia w zwykłym żądaniu serwletu HTTP. Zauważ, że nie możesz uzyskać dostępu do konkretnych ziaren o żądanym zakresie podczas zwykłego żądania serwletu HTTP, ponieważ zawsze zwracają null.

Zakres sesji jest najlepszy, co można uzyskać. Możesz po prostu usunąć atrybut z zakresu sesji, gdy skończysz z serwletem.

session.removeAttribute("somename"); 
+0

Gdziekolwiek mam pytanie związane z JSF, wiem, że mogę na ciebie liczyć. Dzięki – Filippo

+0

Nie ma za co :) – BalusC

+0

> BalusC powiedział: "Zauważ, że nie możesz uzyskać dostępu do konkretnych zakresów zapytań na żądanie podczas zwykłego żądania HTTP serwletu albo ..." Czy mógłbyś wyjaśnić, dlaczego? Dzięki. –

Powiązane problemy