2010-05-12 7 views
16

S'il vous plaît jeter un oeil à cette ligne de code ci-dessous dans JSFJSF: demande initiale et demande de publication?

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

Citation de java.sun.com:

Pour une première demande de la page contenant cette balise, la JavaServer Faces mise en œuvre évalue l'expression #{customer.name} pendant la phase de réponse de rendu du cycle de vie. Pendant cette phase, l'expression accède simplement à la valeur du nom du bean client, comme cela se fait dans l'évaluation immédiate. Pour une demande de publication, l'implémentation JavaServer Faces évalue l'expression à différentes phases du cycle de vie, au cours de laquelle la valeur est extraite de la demande, validée et propagée au bean client.

Je ne suis pas sûr que je comprends demande initiale vs postback demande. Le navigateur client effectue-t-il deux requêtes différentes sur le serveur Web?

Répondre

12

demande initiale est la demande que le navigateur ne pour afficher la page avec la balise ${customer.name}. La publication se produit lorsque le navigateur publie une partie ou la totalité des valeurs de page et que la même page qui a été publiée en premier lieu est renvoyée au client. Cela peut arriver par exemple à la suite d'une erreur de validation.

Savoir si la vue actuelle étant rendu est le résultat d'un postback est utile. Par exemple, vous pouvez afficher un message à la suite d'une publication, mais pas chaque fois que la page est actualisée.

23

La requête initiale ne passe que dans la vue de restauration & Rendu des phases de réponse, tandis que le processus de demande de publication dans toutes les phases (application de valeurs de demande, phase de validation, etc.).

demande initiale est créée en cliquant sur un lien, coller une URL dans la barre d'adresse, tandis qu'une demande de postback est de créer en affichant un formulaire en cliquant sur un bouton ou soumettre toute demande de poste.

+1

Pas tout le temps. Toutes les 6 phases seront exécutées dans le cas d'une requête GET initiale avec des paramètres d'affichage. –

+0

Cette réponse n'est pas 100% correcte. Le commentaire de @ShirgillFarhanAnsari est correct et la réponse est mieux mise à jour. –

0

Normalement, vous devriez avoir qu'une seule demande initiale, quand vous allez au navigateur et à écrire dans l'URL de votre application. Cela fait une requête HTTP GET au serveur avec vos cookies par exemple. JSESSIONID, mais pas avec javax.faces.viewid à restaurer.

Lorsque vous avez une page ouverte et que vous faites des choses hacky lick: window.location = newUrl -> vous aussi faire une demande initiale. Lorsque vous faites plutôt quelque chose comme jQuery ("# ​​somoeSubmitButton"). Click(), vous POST au serveur et votre ancienne vue sera restaurée - et si vous demandez des visages context.isPostback()? tu deviendras vrai.

Questions connexes