2013-01-04 63 views
-1

尝试从第1页导航到第3页以及第2页导航到第3页。在第3页上,当我点击返回按钮时,它应导航到适当的页面。请任何人都可以帮助我如何实现此目的?jsf2中的后退按钮功能

回答

0

如果你想实现这一点,你必须实现基于URL的导航。要从1导航到3,您可以实施带有结果属性的<h:button>

<h:button value="Go to third" outcome="/thirdpage.xhtml" />

你也可以做到这一点指定导航规则。然而,你有几十个教程来做到这一点。

http://www.mkyong.com/jsf2/jsf-2-button-and-commandbutton-example/

http://www.mkyong.com/jsf2/implicit-navigation-in-jsf-2-0/

JSF 2.0 implicit navigation, different views

为了知道你什么时候从有不同的方式,但我认为正确的方法是使用视图PARAMS。在一个按钮或链接中,您可以指定一个<f:param name="ComingFrom" value="#{sourceBean.id}" />,并在目标页面以<f:viewParam id="ComingFrom" name="ComingFrom" value="#{destinationBean._ParamSourceId}" />的方式接收它。

这样,你通过请求传递参数,你可以建立你的后退按钮指向一个URL或另一个。

你有更多的东西。

https://blogs.oracle.com/rlubke/entry/jsf_2_0_bookmarability_view

+0

感谢您的回复。我的问题是在第3页中,如何确定请求是来自第1页还是第2页,以便后退按钮应该导航到相应的页面。 –

+0

我改变我的答案,以帮助你。 –

0

可以通过让具有字段,其存储的前一页一个bean实现这一目标。然后在第三页中,您可以使用此字段的值返回到相应的页面。例如,在第一页中,您需要有一个commandLink将您导航到第三页,同时将previousPage设置为firstPage。类似的commandLink也应该是第二页的一部分。您需要在h:forms中包含h:commandLinks,因为它们使用post方法来传递参数。

<h:commandLink value="Third Page" action="#{navigationPageBean.updateLastVisitedPage("/firstPage.xhtml")}"/> 

<h:commandLink value="Third Page" action="#{navigationPageBean.updateLastVisitedPage("/secondPage.xhtml")}"/> 

@Named 
public class NavigationPageBean implements Serializable 
{ 
    private String previousPage; 

    public String updateLastVisitedPage(String pageName) 
    { 
     previousPage = pageName; 
     return "/thirdpage.xhtml"; 
    } 

    public String getPreviousPage() 
    { 
     return previousPage; 
    } 

    public void setPreviousPage(String previousPage) 
    { 
     this.previousPage = previousPage; 
    } 
} 

您可以使用JavaScript方法来学习前一页太,我认为做到这一点,但我不知道确切的方法。

+0

非常感谢您的回复。 –

+0

欢迎您,我希望它能解决您的问题。 – cubbuk