JSF中“后退”导航链接的最佳实践

时间:2010-02-05 11:52:56

标签: java jsf navigation

制作“后退”链接的最佳方法是什么,以便导航后应用程序保持一致。

  • onclick="history.go(-1)"。这是非常有害的吗?
  • 使用支持bean中的堆栈弹出最后一个视图的导航大小写。您可以通过使用<f:setPropertyActionListener>
  • 设置导航案例来完成此操作
  • 这些都不是......其他解决方案。

任何帮助将不胜感激!分享你的意见! 丹尼尔

2 个答案:

答案 0 :(得分: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}" />

答案 1 :(得分:5)

我正在使用:

这可确保在按下“后退”按钮或history.go(-1)

  • 上一个屏幕中可用的数据仍然存在(因为对话仍处于活动状态)
  • “重新提交”浏览器对话框无法打开。

P.S。 "backlink"具有不同的含义