2012-04-02 8 views
3

ページの1つに「キャンセル」ボタンがあります。 しかし、ページは別の場所から開くことができます、私は親ページが異なることができることを意味します。JSFのボタン・ナビゲーションのキャンセル

キャンセル今すぐキャンセル元に戻ったページに戻ってください。 history.back()のように。

JSFでどのように実装できますか?

私はいくつかガイドできますか?

history.back()は直接動作していません。

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}" /> 

私は、同じボタンを作っています。..

<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

ありがとうございましたDaniel、 私は** Ketan

+0

あなたは大歓迎です:) – Daniel

+0

@ダニエルこのアプローチには問題があります。ページAで送信をクリックすると、ページBのページAでキャンセルをクリックするとページBが開きます。今ここにはひねりがあります。ページAでキャンセルしようとすると、ページBが開きます。 –

1

Application.getNavigationHandlerを介してデフォルトのナビゲーションハンドラーを取得します。 reflection proxyにラップして、Application.setNavigationHandlerを介して新しいデフォルトナビゲーションハンドラとしてプロキシを設定します。プロキシの呼び出しハンドラでは、すべてのナビゲーションイベントを結果とともに追跡し、これから独自の履歴を構築できます。その後、この履歴を使用して履歴に戻って「キャンセル」ボタンの操作を処理します。

+0

ありがとうございますSylar、 あなたの答えは非常に一般化されています。まだ試していない。しかし、必ずそれを試してみましょう。どうもありがとうございました。あなたは素晴らしいです。 – Ketan

関連する問題