【发布时间】:2013-01-04 06:28:29
【问题描述】:
尝试从第 1 页导航到第 3 页以及从第 2 页导航到第 3 页。在第 3 页中,当我单击后退按钮时,它应该导航到相应的页面。有人可以帮我实现这一目标吗?
【问题讨论】:
标签: jsf-2
尝试从第 1 页导航到第 3 页以及从第 2 页导航到第 3 页。在第 3 页中,当我单击后退按钮时,它应该导航到相应的页面。有人可以帮我实现这一目标吗?
【问题讨论】:
标签: jsf-2
您可以通过拥有一个存储前一页的字段的 bean 来实现这一点。然后在第三页可以使用该字段的值返回到相应的页面。例如,在您的第一页中,您需要有一个 commandLink 将您导航到第三页,同时将 previousPage 设置为 firstPage。类似的 commandLink 也应该是第二页的一部分。您需要将 h:commandLinks 包含在 h:forms 中,因为它们使用 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方法学习上一页来实现这一点,但我不知道确切的方法。
【讨论】:
如果你想实现它,你必须实现基于 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
为了知道你来自哪里,有不同的方法,但我认为正确的方法是使用视图参数。在按钮或链接中,您可以指定<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
【讨论】: