2012-04-10 6 views

risposta

18

Che cosa fa setResponsePage dipende da un paio di fattori: quante volte si chiama setResponsePage, quale variante della setResponsePage si chiama e quale strategia di rendering si utilizza.

È possibile chiamare setResponsePage molte volte durante una richiesta. Wicket usa l'ultimo con cui lavorare.

Esistono due varianti di setResponsePage: con un'istanza Page e una classe Page e PageParameters. Quest'ultimo invia un reindirizzamento a un URL bookmarkable per il browser. L'ex volontà, a seconda del render strategy, sia:

  • ONE_PASS_RENDER
    • il rendering della pagina direttamente al browser
  • REDIRECT_TO_BUFFER
    • il rendering della pagina in un buffer, inviare un reindirizzamento al browser (che recupera quindi il markup bufferizzato, reso) o
  • REDIRECT_TO_RENDER
    • inviare un redirect al browser, che invia una richiesta per il rendering della pagina

Quindi la prima opzione è la spedizione, la seconda opzione è la spedizione seguito da un redirect, e la terza opzione verrebbe reindirizzata in termini servlet.

+0

@Martin Dashorst: il browser vede un 302 in REDIRECT_TO_BUFFER? – bert

+1

appena provato con il mio progetto: Richiesta URL: http: // localhost: 8080/som/app/home 14-2.ILinkListener-menu-Personali metodo di richiesta: ottenere il codice Stato: 302 Trovato Così sì, Wicket invia un 302 in quel caso. –

+0

@ Martin Dashorst: grazie, questo spiega perché abbiamo un 302 che richiede più tempo del 2, reqeust, a causa del buffer. Grande, un altro mistero risolto;) – bert

1

setResponsePage (PageName.class) reindirizzerà il browser al nome pagina che è necessario andare. Assicurati di aver già montato il file Page.class su un determinato percorso. Ad esempio, nel metodo di applicazione Application, è possibile montare come questo mountPage ("/ home.html", WelcomePage.class); quindi in qualche altra pagina, quando hai bisogno di andare alla home page, chiami così come setResponsePage (WelcomePage.class);

Problemi correlati