Best practices for “Back” navigation links in JSF

前端 未结 2 926
耶瑟儿~
耶瑟儿~ 2021-02-09 03:36

What is the best way to make \"Back\" links, so that the application stays consistent after navigation.

  • onclick=\"history.go(-1)\". Is this very harmf
相关标签:
2条回答
  • 2021-02-09 04:08

    If you want to solve this by programmed navigation links, you can use a LinkedList as a stack. This way you can set boundaries for the number of stored navigation cases.

    Example:

    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();
        }
    }
    

    So in 'forward' links:

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

    And a 'back' link would be:

    <h:commandLink value="Back"
                   action="#{backNavigationBean.getLastPage}" />
    
    0 讨论(0)
  • 2021-02-09 04:17

    I'm using:

    • MyFaces orchestra for providing conversation scope
    • <redirect /> for each navigation rule

    This ensures that on pressing the "back" button or history.go(-1):

    • the data that has been available in the previous screen will be still there (because the conversation is still active)
    • the "resubmit" browser dialog won't open.

    P.S. "backlink" has a different meaning

    0 讨论(0)
提交回复
热议问题