JSF如何在转发到其他页面之前显示导航确认弹出窗口

JSF如何在转发到其他页面之前显示导航确认弹出窗口,jsf,primefaces,Jsf,Primefaces,我在页面中使用Primfaces布局组件,当用户单击菜单链接时,我不会在导航中使用重定向 i、 例如,我使用的是faces redirect?true,而URL在用户导航时不会改变 我想在用户离开当前视图之前显示一个确认对话框,如 “确实要离开此页吗?” 因此,一旦用户单击确定,它就应该转发到其他页面,否则如果用户单击取消,它应该保持在同一页面 另一个限制是,我只希望为少数选定页面(而不是所有页面)提供此功能 处理这个问题的最佳方法是什么 Primefaces版本:3.5 JSF版本:2.1.1

我在页面中使用Primfaces布局组件,当用户单击菜单链接时,我不会在导航中使用重定向

i、 例如,我使用的是
faces redirect?true
,而URL在用户导航时不会改变

我想在用户离开当前视图之前显示一个确认对话框,如

“确实要离开此页吗?”

因此,一旦用户单击
确定
,它就应该转发到其他页面,否则如果用户单击
取消
,它应该保持在同一页面

另一个限制是,我只希望为少数选定页面(而不是所有页面)提供此功能

处理这个问题的最佳方法是什么

Primefaces版本:3.5
JSF版本:2.1.13

我的所有ManagedBeans都在@ViewScoped

中,如果您想尝试从javascript方面解决此问题,请使用

window.onbeforeunload = function(e) {
    return 'Dialog text here.';
};    
并查看与正在单击的链接无关的对话框(请参见)。或者尝试添加

onclick="if (!confirm('Your dialog-text here')) {return false;}" 

要选择一个链接,您希望显示对话框。

当您说,您只希望选择的页面显示此链接时,是否意味着:我希望在选择的页面上显示该页面上的对话框。或者这是否意味着:当我浏览到选定的其他页面时,我只希望该对话框出现?在第一种情况下,坚持JavaScript并查看文章@ Lay:考虑我有4页首页、登记、反馈和联系。我希望当用户处于“注册”页面时启动该对话框,并尝试导航到任何其他页面。如果您只处理链接提供的导航,则只需显示primefaces面板,该面板将提供一个按钮,该按钮在
OK
情况下充当链接,而
CANCEL
按钮将隐藏该面板。我在这里什么也看不到了。另一种情况是,如果您想管理用户关闭选项卡的时间,您需要按照@L-Ray的建议处理页面卸载事件。@XtremeBiker:嘿,谢谢您的回复,有没有其他方法可以在不触摸或更改菜单链接代码的情况下完成此操作?可能是一个行为与javax.faces.event.PreRenderViewEvent相反的事件?不要认为不改变它们是可能的。若你们导航到另一个页面,你们已经发送了一个GET请求,不需要确认。在这种情况发生之前,您确实需要使用您的面板。嘿,L-Ray..,不,这种方法不起作用。。我使用的是FORWARD not REDIRECT,所以URL不会刷新。
窗口.onbeforeunload
在我的Firefox 26.0上工作,下面的
onclick
-方法也可以工作。卸载工作独立于转发或重定向(至少在上面描述的浏览器上)。