代码之家  ›  专栏  ›  技术社区  ›  Daniel Szalay

JSF中“返回”导航链接的最佳实践

  •  8
  • Daniel Szalay  · 技术社区  · 16 年前

    创建“反向”链接的最佳方法是什么,以便应用程序在导航后保持一致。

    • onclick="history.go(-1)" . 这很有害吗?
    • 在支持bean中使用堆栈,弹出最后一个视图的导航案例。您可以通过将导航案例设置为 <f:setPropertyActionListener> .

    任何帮助都将不胜感激!分享你的想法!

    2 回复  |  直到 16 年前
        1
  •  5
  •   Bozho    16 年前

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

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

    附笔。 "backlink"

        2
  •  6
  •   Daniel Szalay    14 年前

    如果您想通过编程导航链接解决此问题,可以使用 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}" />