The <h:outputLink>
merender HTML fullworthy <a>
elemen dengan URL yang tepat dalam href
atribut yang kebakaran permintaan GET bookmarkable. Itu tidak bisa secara langsung memanggil metode tindakan kacang yang dikelola.
<h:outputLink value="destination.xhtml">link text</h:outputLink>
The <h:commandLink>
merender HTML <a>
elemen dengan onclick
naskah yang mengirimkan formulir (tersembunyi) POST dan dapat memanggil metode tindakan kacang berhasil. Ini juga harus ditempatkan di dalam <h:form>
.
<h:form>
<h:commandLink value="link text" action="destination" />
</h:form>
The ?faces-redirect=true
parameter pada <h:commandLink>
, yang memicu redirect setelah POST (sesuai Post-Redirect-Dapatkan pola), hanya meningkatkan bookmarkability dari halaman target ketika link tersebut benar-benar mengklik (URL tidak akan "satu di belakang" lagi) , tetapi tidak mengubah href
dari <a>
elemen menjadi URL fullworthy. Masih ada #
.
<h:form>
<h:commandLink value="link text" action="destination?faces-redirect=true" />
</h:form>
Sejak JSF 2.0, ada juga <h:link>
yang dapat mengambil ID tampilan (hasil kasus navigasi) alih-alih URL. Ini akan menghasilkan <a>
elemen HTML juga dengan URL yang tepat di href
.
<h:link value="link text" outcome="destination" />
Jadi, jika itu untuk navigasi halaman-ke-halaman murni dan dapat-bookmark seperti tautan nama pengguna SO, gunakan <h:outputLink>
atau <h:link>
. Itu juga lebih baik untuk SEO karena bot biasanya tidak mengacak bentuk POST atau kode JS. Juga, UX akan ditingkatkan karena halaman-halamannya sekarang dapat di-bookmark dan URL-nya bukan "satu di belakang" lagi.
Bila perlu, Anda dapat melakukan pekerjaan preprocessing di konstruktor atau @PostConstruct
dari @RequestScoped
atau @ViewScoped
@ManagedBean
yang dilampirkan ke halaman tujuan yang dimaksud. Anda dapat menggunakan @ManagedProperty
atau <f:viewParam>
untuk mengatur parameter GET sebagai properti kacang.
Lihat juga:
UICommand
komponen yang perlu dimasukkan dalam suatuUIForm
komponen.