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

Dan*_*lay 8 java navigation jsf

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

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

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

Dan*_*lay 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

所以在"前进"链接中:

<h:commandLink value="Forward" action="#{myBean.someMethod}">
    <f:setPropertyActionListener target="#{backNavigationBean.lastPage}"
                                 value="back_to_index" />
</h:commandLink>
Run Code Online (Sandbox Code Playgroud)

并且"后退"链接将是:

<h:commandLink value="Back"
               action="#{backNavigationBean.getLastPage}" />
Run Code Online (Sandbox Code Playgroud)


Boz*_*zho 5

我正在使用:

  • MyFaces乐团提供对话范围
  • <redirect /> 对于每个导航规则

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

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

PS "反向链接"具有不同的含义