尝试从第1页导航到第3页以及第2页到第3页。在第3页,当我点击后退按钮时,它应该导航到相应的页面。有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
如果要实现这一目标,则必须实施基于网址的导航。要从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
为了知道你来自哪里有不同的方式,但我认为正确的方法是使用视图参数。在按钮或链接中,您可以指定<f:param name="ComingFrom" value="#{sourceBean.id}" />
,并在目标网页中以<f:viewParam id="ComingFrom" name="ComingFrom"
value="#{destinationBean._ParamSourceId}" />
的方式接收该{{1}}。
这样你就可以通过请求传递参数,你可以建立你的后退按钮来指向一个网址或另一个网址。
你有更多的东西。
https://blogs.oracle.com/rlubke/entry/jsf_2_0_bookmarability_view
答案 1 :(得分: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方法来学习上一页,我想也是如此,但我不知道确切的方法。