2009-11-11 13 views
7

Kiedy mam javax.faces.application.ViewExpiredException Chcę wysłać użytkownika do strony logowania.com.sun.faces.enableRestoreView11Kompatybilność, co należy zamiast tego używać w JSF 1.2

web.xml

... 
    <context-param> 
     <param-name>com.sun.faces.enableRestoreView11Compatibility</param-name> 
     <param-value>true</param-value> 
    </context-param> 
... 
<error-page> 
    <exception-type>javax.faces.application.ViewExpiredException</exception-type> 
    <location>/errors/sessionExpired.jsf</location> 
</error-page> 

sessionExpired.jsf

.... 
<c:redirect url="/index.jsf" /> 

ale enableRestoreView11Compatibility jest metodą, która została wykorzystana w JSF 1.1, co jest rozwiązaniem JSF 1,2?

Odpowiedz

12

com.sun.faces.enableRestoreView11Compatibility to ustawienie JSF 1.2, które mówi JSF 1.2, aby zachowywał się jak JSF 1.1.

com.sun.faces.enableRestoreView11Compatibility == true oznacza „nie rzucać ViewExpiredException, zamiast po prostu utworzyć nowy widok jeśli stary wygasł.”

IBM notes na zachowanie JSF 1.1 powiedzieć:

Może to mieć negatywne zachowania, ponieważ jest to nowy widok, a przedmioty, które są zwykle w widoku, takie jak państwo, nie są już tam być.

Domyślna JSF 1.2 zachowanie jest zdefiniowane w the spec jak to:

Jeżeli wniosek jest odświeżenie strony, zadzwoń ViewHandler.restoreView(), przekazując instancję FacesContext dla bieżącego żądania i identyfikator widoku, i przekazujących UIViewRoot dla przywróconego widoku. Jeśli zwrot z ViewHandler.restoreView() ma wartość null, wyślij ViewExpiredException z odpowiednim komunikatem o błędzie. javax.faces.application.ViewExpiredException is a FacesException`, który musi zostać zgłoszony, aby zasygnalizować aplikacji, że oczekiwany widok nie został zwrócony dla identyfikatora widoku. Aplikacja może wykonać pewne działanie w oparciu o ten wyjątek.

mieć ViewExpiredException wyrzucane po wygaśnięciu widok, usunąć parametrcom.sun.faces.enableRestoreView11Compatibility lub ustawić go na false.


Przestrzeń nazw com.sun sugeruje, że parametr jest Słońce/Mojarra i pochodzi ustawienie wdrożenie specyficznych, więc prawdopodobnie nie będzie działać we wszystkich implementacjach JSF.

+1

Pomyślałem, że mogę użyć ... aby przekierować użytkownika na stronę logowania, ale bez tego parametru kompatybilności to nie działa. Muszę napisać mój PhaseListener, aby wykonać to przekierowanie, lub może jest jakiś prosty sposób. – aindl

+0

Czy to ustawienie jest nadal poprawne w JSF 2.2 lub jest jakaś opcja? –

Powiązane problemy