Quando dovrei usare h: outputLink invece di h: commandLink?

Quando dovrei usare un invece di un ?

Capisco che un commandLink genera un post HTTP; Sto indovinando che outputLink genererà HTTP ottiene. Detto questo, la maggior parte del materiale didattico JSF che ho letto utilizza esclusivamente commandLink (quasi?).

Contesto: sto implementando un piccolo progetto dimostrativo che mostra un link di intestazione a una pagina utente, simile a Stack Overflow’s …

ha bisogno di più jquery

… e non sono sicuro se commandLink (forse usando ?faces-redirect=true per bookmarkability) o outputLink è la scelta giusta.

rendering di un elemento HTML completo con l’URL corretto nell’attributo href che genera una richiesta GET con segnalibro. Non può richiamare direttamente un metodo di azione bean gestito.

 link text 

rendering di un elemento HTML con uno script onclick che inoltra un modulo POST (nascosto) e può richiamare un metodo di azione bean gestito. È anche necessario che sia inserito in un .

    

Il parametro ?faces-redirect=true su , che triggers un reindirizzamento dopo il POST (come per il pattern Post-Redirect-Get ), migliora solo la bookmarkability della pagina di destinazione quando il link viene effettivamente cliccato (il L’URL non sarà più “uno dietro”), ma non modificherà l’ href dell’elemento come un URL completo. Rimane ancora # .

    

Dal momento che JSF 2.0, c’è anche il che può richiedere un ID vista (un caso caso di navigazione) invece di un URL. elemento HTML con l’URL corretto in href .

  

Quindi, se si tratta di una navigazione da pagina a pagina pura e selezionabile come il link del nome utente SO, utilizzare o . Questo è anche meglio per SEO dato che i bot di solito non codificano le forms POST né il codice JS. Inoltre, UX sarà migliorato in quanto le pagine sono ora bookmarkable e l’URL non è più “uno dietro”.

Se necessario, è ansible eseguire il processo di pre-elaborazione nel costruttore o @PostConstruct di @RequestScoped o @ViewScoped @ManagedBean che è collegato alla pagina di destinazione in questione. È ansible utilizzare @ManagedProperty o per impostare i parametri GET come proprietà bean.

Guarda anche:

  • ViewParam vs @ManagedProperty (value = “# {param.id}”)
  • Per cosa possono essere usati , e ?
  • Bookmarkability tramite la funzione View Parameters
  • Come navigare in JSF? Come rendere l’URL riflette la pagina corrente (e non quella precedente)

Vedo anche che il caricamento della pagina (prestazioni) richiede molto tempo per l’utilizzo di h: commandLink di h: link. h: link è più veloce rispetto a h: commandLink