JSF 中“返回”导航链接的最佳实践
Posted
技术标签:
【中文标题】JSF 中“返回”导航链接的最佳实践【英文标题】:Best practices for "Back" navigation links in JSF 【发布时间】:2011-01-13 11:57:48 【问题描述】:制作“返回”链接的最佳方式是什么,以便应用程序在导航后保持一致。
onclick="history.go(-1)"
。这非常有害吗?
使用支持 bean 中的堆栈弹出最后一个视图的导航案例。您可以通过使用<f:setPropertyActionListener>
设置导航案例来做到这一点。
这些都不是……其他解决方案。
任何帮助将不胜感激!分享你的意见! 丹尼尔
【问题讨论】:
【参考方案1】:如果您想通过编程导航链接解决此问题,您可以使用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" />
【讨论】:
嗨。这个 Bean 的作用域是什么?因为如果它是 SessionScoped ,那么管理导航将非常困难,因为堆栈将被推送,链接最终会出现错误导航。【参考方案2】:我正在使用:
MyFaces orchestra 提供对话范围<redirect />
用于每个导航规则
这确保在按下“返回”按钮或history.go(-1)
:
附: "backlink"有不同的含义
【讨论】:
以上是关于JSF 中“返回”导航链接的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章