The <h:outputLink>merender HTML fullworthy <a>elemen dengan URL yang tepat dalam hrefatribut 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 onclicknaskah 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=trueparameter 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 hrefdari <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 @PostConstructdari @RequestScopedatau @ViewScoped @ManagedBeanyang dilampirkan ke halaman tujuan yang dimaksud. Anda dapat menggunakan @ManagedPropertyatau <f:viewParam>untuk mengatur parameter GET sebagai properti kacang.
Lihat juga:
UICommandkomponen yang perlu dimasukkan dalam suatuUIFormkomponen.