2010-02-05 37 views
8

製作「後退」鏈接的最佳方式是什麼,以便導航後應用程序保持一致。JSF中「後退」導航鏈接的最佳做法

  • onclick="history.go(-1)"。這是非常有害的嗎?
  • 在支持bean中使用堆棧,該堆棧會彈出最後一個視圖的導航案例。您可以通過使用<f:setPropertyActionListener>設置導航案例來完成此操作。
  • 這些......其他解決方案都不是。

任何幫助,將不勝感激!分享你的意見! 丹尼爾

回答

5

我使用:

這確保按下 「返回」 按鈕或history.go(-1)

  • 在前一個屏幕中可用的數據將仍然存在(因爲對話仍處於活動狀態)
  • 「重新提交」瀏覽器對話框將不會打開。

P.S. "backlink"具有不同的含義

6

如果要通過編程導航鏈接解決此問題,可以使用LinkedList作爲堆棧。這樣您可以爲存儲的導航案例數量設置邊界。

例子:

public class BackNavigationBean { 

    public BackNavigationBean() { 
     history = new LinkedList<String>(); 
    } 
    private LinkedList<String> history; 

    public LinkedList getHistory() { 
     return history; 
    } 

    public void setLastPage(String navigationCase) { 
     history.push(navigationCase); 
     if (history.size() > 10) { 
      history.pollLast(); 
     } 
    } 

    public String getLastPage() { 
     return history.pop(); 
    } 
} 

所以在 '前進' 鏈接:

<h:commandLink value="Forward" action="#{myBean.someMethod}"> 
    <f:setPropertyActionListener target="#{backNavigationBean.lastPage}" 
           value="back_to_index" /> 
</h:commandLink> 

和 '回' 鏈接將是:

<h:commandLink value="Back" 
       action="#{backNavigationBean.getLastPage}" /> 
+0

嗨。這個Bean的範圍是什麼?因爲如果它是SessionScoped,那麼管理導航將會非常困難,因爲堆棧將被鏈接推送,最終導致錯誤的導航。 – LupoZ 2017-04-21 13:39:12

相關問題