JSF 中的取消按钮导航

Posted

技术标签:

【中文标题】JSF 中的取消按钮导航【英文标题】:Cancel button navigation in JSF 【发布时间】:2012-04-15 20:48:13 【问题描述】:

我在页面上有一个取消按钮。 但是这个页面可以从不同的地方打开。我的意思是父页面可能会有所不同。

现在,通过单击取消按钮,我需要返回到我原来的页面 - 例如 history.back()

我们如何在 JSF 中实现它?

有人可以指导我吗?

history.back() 直接不起作用。

<h:commandButton type="button" id="cancel" image="#sessionScope.sessionObject.graphicImageFolderNamecancel_btn.gif" accesskey="#bundle.oscer_command_cancel_accesskey" value="Cancel" action="#templatePrescriptionMaintenanceBackingBean.goBack" />

如果是history.back(),我正在制作与...相同的按钮。

<h:commandButton type="button" id="cancel" image="#sessionScope.sessionObject.graphicImageFolderNamecancel_btn.gif" accesskey="#bundle.oscer_command_cancel_accesskey" value="Cancel" onclick="javascript: history.back();"/>

这两种情况有什么问题吗?

【问题讨论】:

【参考方案1】:

试试

<h:commandLink onclick="history.go(-1); return false;">

或者

<h:commandButton onclick="history.back(); return false;">

为你工作?

【讨论】:

谢谢丹尼尔,我做了 这对我有用。非常感谢。你太棒了。 @Daniel 这种方法有问题。假设在页面 A 上单击提交然后页面 B 现在打开,如果您在页面 B 上单击取消页面 A 将会出现。现在这是一个转折点,如果您尝试在页面 A 上取消,它将打开页面 B。 @AjaySharma ,我猜除了我的之外还有其他解决方案【参考方案2】:

通过Application.getNavigationHandler 获取默认导航处理程序。将其包装在reflection proxy 中,并通过Application.setNavigationHandler 将代理设置为新的默认导航处理程序。在代理的调用处理程序中,您可以跟踪所有导航事件及其结果,并以此构建您自己的历史记录。然后使用此历史记录来处理“取消”按钮的导航,方法是返回您的历史记录。

【讨论】:

感谢 Sylar,您的回答非常笼统。还没试过。但肯定会尝试。非常感谢。你太棒了。

以上是关于JSF 中的取消按钮导航的主要内容,如果未能解决你的问题,请参考以下文章

从 JSF2 中的操作导航时如何传递视图参数?

当通过链接或后退按钮打开时,强制 JSF 刷新页面/视图/表单

UIsearchBar 取消按钮导致导航栏未隐藏

JSF ViewParam 必需 +AJAX 中断页面

更改系统相机UIImagePickerController导航栏的cancle为取消按钮

禁用 jsf/primefaces 中的窗口功能