0

問題は私のものと同じであるため、この質問を参照しますが、私の状況では解決策が使用できるとは思いません。

ボタンを2回押し続ける

記入して送信する必要のある一連のフォームを含むワークフローがあり、ユーザーが[次へ]ボタンをクリックした後にモーダルオーバーレイを表示したいと思います。このオーバーレイを表示するには、コマンドボタンでajaxを使用する必要があります。これは、リンクされた問題で説明されているように、望ましくない動作につながります。

リンクされた問題の解決策は「ナビゲーションにAjaxを使用しない」のように見えましたが、私の場合、この待機中のダイアログを表示するために使用する必要があると思います。次のページのビューステートが正しく更新され、ナビゲートを続行するときにボタンを2回押す必要がないことを保証する他の方法はありますか?

Primefaces3.3.1を使用しています。

<p:commandButton id="nextCommand" value="Next"
    action="#{backingBean.processInputAndDetermineOutcome}"
    onclick="waiter.show();" oncomplete="waiter.hide();">
    <f:param name="validate" value="true" />
</p:commandButton>

「validate」パラメータは、カスタムBeanValidatorで使用しているフラグです。これにより、「戻る」ボタンでフォームを送信し、評価を処理せずにモデルを更新できます。それがこの質問に影響を与えることはないと思いますが、このcommandButtonに関係する他の部分について言及する必要があると思いました。

4

1 に答える 1

1

最善の策は、リダイレクトを使用してナビゲートすることです。

public String processInputAndDetermineOutcome() {
    // ...

    return outcome + "?faces-redirect=true";
}

それ以外の場合は、IEブラウザーのみで問題を実際に観察していて、他のより健全なブラウザーでは観察していない場合は、ここで提案されているPrimeFaces固有のJavaScript修正を試してみてください:JSF言語スイッチャーとajaxアップデート

または、で問題を実際に観察していて、で問題を観察して<f:ajax>いない場合は<p:ajax>、ここで提案されているJSF固有のJavaScript修正を試してください。h:commandButton / h:commandLinkは最初のクリックでは機能せず、2番目のクリックでのみ機能します

于 2012-11-28T18:49:11.170 に答える