1

レンダリングされたrich:messagesコンポーネントにメッセージが添付されているかどうかを JavaScript から確認する必要があります。

rich:messagesAJAX 呼び出しの実行後にコンポーネントを再レンダリングしていa4j:jsFunctionます。Javascript にメッセージが添付されているかどうかを確認したい (これは、検証に合格しなかったことを意味します)。

a4j:jsFunction のコードは次のようになります。

<a4j:jsFunction name="validateSomething" render="erroFinaliza"
        execute="@form" action="#{someMB.preview}">
</a4j:jsFunction>

今のところ、次のh:commandButtonように呼び出しています。

<h:commandButton onclick="validateSomething(); return false;" value="Do Something" />

JavaScript を介して検証の結果を確認し、実際にフォームを送信する方法が必要です。

rich:messages ドキュメントをチェックして、メッセージが添付されているかどうかを確認する方法があるかどうかを確認しましたが、Javascript API はありません。

誰かがより良いアイデアを持っていますか?

4

1 に答える 1

2

この質問でハックな解決策を見つけました。

a4j:jsFunctionを、検証を実行するa4j:commandButton目的にのみ役立つに置き換えます。

次に、oncompleteこの上に、検証が成功したかどうかをチェックするJSを配置し、実際のフォームを送信して実際のアクションを呼び出すa4j:commandButton別の非表示を「クリック」します。h:commandButton

したがって、次のようになります。

<h:form id="id_form">
    <rich:messages id="errors" />

    ...

    <script>
    function submitIfEmpty(noMessages){
        if (noMessages){
            document.getElementById('id_form:hiddenButton').click();
        }
    };
    </script>

    ...

    <a4j:commandButton value="Do Something" render="errors" execute="@form"
         oncomplete="submitIfEmpty(#{empty facesContext.maximumSeverity});" />
    <h:commandButton id="hiddenButton" action="#{someMB.doSomething}"
         value="Do Something (not visible)" style="visibility: hidden" />
</h:form>
于 2012-07-03T19:38:39.180 に答える