2010-05-12 10 views
16

prega di dare un'occhiata a questo sotto la linea di codice JSFJSF: richiesta iniziale e richiesta postback?

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

Citazione di java.sun.com:

Per una prima richiesta della pagina contenente questo tag, l'implementazione JavaServer Faces valuta l'espressione #{customer.name} durante la fase di risposta al rendering del ciclo di vita. Durante questa fase, l'espressione si limita ad accedere al valore del nome dal bean del cliente, come avviene nella valutazione immediata.

Per una richiesta di postback, l'implementazione di JavaServer Faces valuta l'espressione in diverse fasi del ciclo di vita, durante il quale il valore viene recuperato dalla richiesta, convalidato e propagato al bean del cliente.

io non sono sicuro di aver capito richiesta iniziale vs. richiesta postback. Il browser client effettua due richieste diverse al server web?

risposta

12

La richiesta iniziale è la richiesta del browser per visualizzare la pagina con il tag ${customer.name}. Il postback si verifica quando il browser pubblica alcuni o tutti i valori di pagina e quindi la stessa pagina che è stata pubblicata in primo luogo viene restituita al client. Ciò potrebbe accadere ad esempio a seguito di un errore di convalida.

È utile sapere se la vista corrente da eseguire è il risultato di un postback. Ad esempio, potresti voler visualizzare un messaggio come risultato di un postback, ma non tutte le volte che la pagina viene aggiornata.

23

La richiesta iniziale passa solo Ripristino Visualizza & Fasi di risposta di rendering, mentre il processo di richiesta postback viene eseguito in tutte le fasi (Applica valori di richiesta, fase di convalida, ecc.).

La richiesta iniziale viene creata facendo clic su un collegamento, incollando un URL nella barra degli indirizzi, mentre una richiesta di postback viene creata pubblicando un modulo facendo clic su un pulsante di invio o su qualsiasi richiesta di post.

+1

Non tutto il tempo. Tutte le 6 fasi verranno eseguite in caso di una richiesta GET iniziale con parametri di visualizzazione. –

+0

Questa risposta non è corretta al 100%. Il commento di @ShirgillFarhanAnsari è corretto e la risposta è più aggiornata. –

0

Normalmente si avrebbe una sola richiesta iniziale, quando si accede al browser e si scrive nell'URL della propria app. Questo effettua una richiesta HTTP GET al server con i cookie ad es. JSESSIONID, ma non con javax.faces.viewid da ripristinare.

Quando si dispone di una pagina aperta e si fa il trucco hacky: window.location = newUrl -> si farà anche una richiesta iniziale.

Quando invece si fa qualcosa come jQuery ("# ​​somoeSubmitButton"). Click(), si esegue il POST sul server e la vista precedente verrà ripristinata - e se si chiede facce context.isPostback()? tu diventerai vero.

Problemi correlati