16

私の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?
4

4 に答える 4

31

JavaScriptconfirm()関数を使用します。値を返しbooleanます。falseが返された場合、ボタンのデフォルトのアクションはブロックされます。それ以外の場合は続行されます。

<h:commandButton onclick="return confirm('Are you sure?')" />

すでに戻ってきているので、他の回答で提案されbooleanたものに包む必要はまったくありません。if

于 2010-11-10T20:41:07.583 に答える
3

ボタンのonclickにjavascriptを追加できます。

<h:commandButton  
    id="commandButtonAcceptDraft" 
    title="#{bundle.tooltipAcceptDraft}"  
    action="#{controller.actionReplaceCurrentReportWithDraft}"  
    onclick="return confirm('Are you sure?')"
    image="/images/checkmark.gif"> 
</h:commandButton> 
于 2010-11-10T20:35:53.207 に答える
2

これは機能するはずです。理想的には、Javaスクリプトファイルに含める必要があります。

<h:commandButton 
    id="commandButtonAcceptDraft"
    title="#{bundle.tooltipAcceptDraft}" 
    action="#{controller.actionReplaceCurrentReportWithDraft}" 
    image="/images/checkmark.gif"
     onclick="if (!confirm('Are you sure?')) return false">
</h:commandButton>
于 2010-11-10T20:40:42.993 に答える
1

私はJSFを使用したことがないので、どのイベントをリッスンする必要があるかわかりません(クリックすると想定します)。一般的に言えば、これは機能するはずです。

var element = document.getElementById('commandButtonAcceptDraft');

element.onclick = function(e){
  return confirm('Are you sure etc...');
};
于 2010-11-10T20:25:29.980 に答える