0

次のようなコマンド ボタンがあります。

<p:commandButton value="Save" actionListener="#{bean.checkDetails}" action="#{bean.save}" />

私の checkDetails() メソッドはページ上のいくつかのフィールドをチェックし、それらが入力されていない場合は、RequestContext を使用して Javascript alert() をトリガーし、ユーザーが「OK」をクリックするまで bean.save が呼び出されないようにするために使用します。RequestContext ピースは次のようになります。

RequestContext context = RequestContext.getCurrentInstance();
context.execute("alert('Details are not Complete.')");

私の問題は、alert() ダイアログが表示されず、checkDetails() メソッドの状態に関係なく bean.save が呼び出されていることです。

私はこれを完全に間違った方法で行っていますか?これまでに 3 時間を費やしましたが、行き詰まっています。アクション メソッドを削除すると、alert() が正常にポップアップします。

どうぞよろしくお願いいたします。

4

1 に答える 1

0

私の checkDetails() メソッドは、ページのいくつかのフィールドをチェックし、それらが入力されていない場合...

required="true"BalusC が言ったように、これはこれらのフィールドに追加することで非常に簡単に解決できるため、Java を記述する必要はありません。

これを 'old-scool' と混同したい場合は、コールバック パラメータalert()を使用できます。validationFailed

<h:form>
    <p:inputText required="true" />
    <p:commandButton value="submit" oncomplete="handleValidation(xhr, status, args)" />
</h:form>
<script type="text/javascript">
    function handleValidation(xhr, status, args)
    {
        if(args.validationFailed)
        {
            alert('Details are not Complete.');
        }
    }
</script>
于 2012-12-12T12:38:44.263 に答える