2010-05-12 22 views
16

Proszę spojrzeć na ten temat poniżej linii kodu w JSFJSF: początkowe żądanie i żądanie odświeżenia strony?

<h:inputText id="name" value="#{customer.name}" /> 

Cytat java.sun.com:

Na początkowym wniosek strony zawierającej ten tag, JavaServer Faces realizację ocenia wyrażenie #{customer.name} podczas fazy odpowiedzi renderowania cyklu życia. Podczas tej fazy wyrażenie jedynie uzyskuje dostęp do wartości nazwy z komponentu bean klienta, tak jak ma to miejsce w przypadku natychmiastowej oceny.

Dla żądania odświeżenia, implementacja JavaServer Faces ocenia wyrażenie na różnych etapach cyklu życia, podczas którego wartość jest pobierana z żądania, sprawdzana i propagowana do komponentu bean klienta.

Nie jestem pewien, czy rozumiem wstępny wniosek vs. prośba postback. Czy przeglądarka klienta wysyła dwa różne żądania do serwera WWW?

Odpowiedz

12

Wstępne żądanie jest żądaniem przeglądarki, aby wyświetlić stronę z tagiem ${customer.name}. Odsyłanie jest wykonywane, gdy przeglądarka publikuje niektóre lub wszystkie wartości strony, a następnie ta sama strona, która została wysłana na pierwszym miejscu, jest zwracana do klienta. Może się tak zdarzyć na przykład w wyniku błędu sprawdzania poprawności.

Wiedza, czy renderowanie bieżącego widoku jest wynikiem odświeżenia strony, jest przydatne. Na przykład możesz wyświetlić komunikat w wyniku odświeżenia strony, ale nie za każdym razem, gdy strona zostanie odświeżona.

23

Wstępne zlecenie przekazuje tylko przywrócić widok & Fazy odpowiedzi na żądanie, podczas procesu żądania odświeżenia we wszystkich fazach (Zastosuj wartości żądania, Faza walidacji, itp.).

Wstępne żądanie tworzy się, klikając łącze, wklejając adres URL na pasku adresu, a żądanie odświeżenia tworzy się, publikując formularz, klikając przycisk przesyłania lub dowolną prośbę o wpis.

+1

Nie cały czas. Wszystkie 6 faz zostanie wykonane w przypadku początkowego żądania GET z parametrami widoku. –

+0

Ta odpowiedź nie jest w 100% poprawna. Komentarz @ShirgillFarhanAnsari jest poprawny, a odpowiedź jest lepiej zaktualizowana. –

0

Zwykle masz tylko jedno pierwsze żądanie, gdy przejdziesz do przeglądarki i napisz adres URL do swojej aplikacji. Spowoduje to wysłanie żądania HTTP GET do serwera za pomocą plików cookie, np. JSESSIONID, ale nie z javax.faces.viewid do przywrócenia.

Gdy masz otwartą stronę i robisz coś hackowego: window.location = newUrl -> również wyślesz wstępną prośbę.

Kiedy zamiast tego zrobisz coś takiego jak jQuery ("# ​​somoeSubmitButton"). Click(), będziesz POST na serwerze i twój stary widok zostanie przywrócony - i jeśli zapytasz face.isPostback() face? staniesz się prawdą.

Powiązane problemy