私のJSF1.2Webアプリケーションには<h:commandButton>
、バッキングBeanでアクションメソッドを呼び出すページがあります。この操作により、データベース内のデータが削除/置換されるため、ユーザーが誤ってコマンドボタンをクリックするような状況は避けたいと思います。
簡単な「よろしいですか?」を実装したいと思います。JavaScriptを使用して「はい/いいえ」または「OK/キャンセル」オプションでプロンプトを表示します。私はJavaScriptが苦手で、JavaScriptとJSFを組み合わせたことはありません。誰かがこれを実装する方法を示すコードスニペットを提供できますか?
これが、コマンドボタンを宣言するJSPページの一部です。
<h:commandButton
id="commandButtonAcceptDraft"
title="#{bundle.tooltipAcceptDraft}"
action="#{controller.actionReplaceCurrentReportWithDraft}"
image="/images/checkmark.gif">
</h:commandButton>
解決:
BalusCが提供するソリューションは問題なく機能しました。また、リソースバンドルのテキストをプロンプトテキストとして使用するのは簡単です。私のページでは、次のような要素を含むリソースバンドルをロードします。
<f:loadBundle basename="com.jimtough.resource.LocalizationResources" var="bundle" />
は<f:loadBundle>
あなたの中にあるに違いありません<f:view>
。次に、BalusCによって提供されたコードをコマンドボタン要素に追加しますが、リソースバンドルの文字列を「Areyousure?」に置き換えます。このようなテキスト:
<h:commandButton
id="commandButtonAcceptDraft"
title="#{bundle.tooltipAcceptDraft}"
action="#{controller.actionReplaceCurrentReportWithDraft}"
image="/images/checkmark.gif"
onclick="return confirm('#{bundle.confirmationTextAcceptDraft}')">
</h:commandButton>
私の英語のリソースファイル(キーと値のペアを持つプレーンテキストファイル)の行は次のようになります。
# text displayed in user prompt when calling confirm()
confirmationTextAcceptDraft=This will overwrite the current report and cannot be undone. Are you sure?