2012-06-26 19 views
4

如果我有一個JSF頁面,我想鏈接到哪裏,我不需要傳遞任何東西到該頁面,並且不需要在我鏈接的頁面上執行任何驗證,我應該總是使用h :鏈接?何時應該使用h:鏈接而不是h:commandLink?

不使用h:commandLink(使用immediate =「true」或execute =「@ this」)會丟失什麼嗎?

在這種情況下h:link和h:commandLink有什麼不同嗎?

+1

可能重複[何時應該使用h:outputLink而不是h:commandLink?](http://stackoverflow.com/questions/4317684/when-should-i-use-houtputlink-instead-of-hcommandlink) – BalusC

回答

12

h:link將激發完整的GET請求。只有JSF生命週期階段1(恢復視圖)和6(呈現響應)將被調用。沒有轉換,沒有驗證,沒有行動。

因此immediate="true"execute="@this"將不起作用(它們根本不可用於h:link)。

如果輸入數據需要在服務器上處理,則使用h:link進行純頁面導航和h:commandLink(啓動POST請求)。

附錄:

按BalusC的評論生命週期階段2-5如果目標頁面包含f:viewParam s的不跳過的GET請求。

+0

在原始問題中,立即執行的引用是針對commandLink的,而不是h:link – BestPractices

+1

第一段不完全正確。當目標頁面爲''時,其他階段將被調用。 – BalusC

+0

@BalusC感謝您的提示。更新了我的答案。 –

相關問題