2012-04-02 63 views
3

我在其中一個頁面中有取消按鈕。 但是頁面可以從不同的地方打開,我的意思是父頁面可以變化。取消JSF中的按鈕導航

現在取消我需要返回確切的網頁。像history.back()

我們如何在JSF中實現它?

有人可以指導我嗎?

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

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

在history.back的情況下,我做相同的按鈕..

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

這有什麼錯在這兩種情況?

回答

4

嘗試

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

或您

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

工作?

+0

謝謝丹尼爾, 我沒有** Ketan 2012-04-02 08:11:38

+0

不客氣:) – Daniel 2012-04-02 08:21:15

+0

@Daniel這種方法存在問題。假設在頁面A上單擊提交,然後頁面B現在打開,如果您單擊頁面B上的取消頁面A將會出現。現在這裏是扭曲的,如果你嘗試在頁面A上取消,它將打開頁面B. – 2016-02-23 05:47:46

1

通過Application.getNavigationHandler獲取默認導航處理程序。將它包裝在reflection proxy中,並通過Application.setNavigationHandler將代理設置爲新的默認導航處理程序。在代理的調用處理程序中,您可以跟蹤所有導航事件及其結果,並根據此創建自己的歷史記錄。然後通過回顧歷史記錄,使用此歷史記錄來處理「取消」按鈕的導航。

+0

感謝Sylar, 您的回答非常一般化。尚未嘗試。但一定會嘗試。非常感謝你。你很棒。 – Ketan 2012-04-02 08:13:52