1

これはa4j:jsFunction下にあり<h:message for="form" style="color:red" />、ページの別の場所にあります。

<h:form id="form">
    <a4j:jsFunction id="createEvent" name="createEvent" immediate="true"
        action="#{calendarController.createEvent()}"
        data="#{calendarController}"
        oncomplete="renderEvent(event.data.eventId, event.data.eventTitle)">
        <a4j:param name="eventTitle"
            assignTo="#{calendarController.eventTitle}" />
    </a4j:jsFunction>
</h:form>

で生成されたエラー メッセージを追加するにはどうすればよいcalendarController.createEvent()ですか?

で試してみましたcontext.addMessage("form", new FacesMessage(e.getMessage()));が、うまくいきません。次のエラーが表示されます。WARNING: There are some unhandled FacesMessages, this means not every FacesMessage had a chance to be rendered.

4

2 に答える 2

1

a4j:jsFunctionAjax 呼び出しを実行しているだけです。ビューは更新されず、他のコンポーネントは以前の状態のままになります。

この属性を使用してreRender、コンポーネントを強制的に更新しh:messageます。

于 2013-05-17T00:03:35.177 に答える
0

最近、同様の問題が発生しました。私が使用していたh:commandButton

        <h:commandButton id="buttonOK"
                         onclick = "#{rich:component('purchasePopup')}.hide(); finishPurchase();"
                         value="Ok"
                         styleClass="popupPrimary"
                         rendered="#{validationSeverity != 'ERROR'}"
                         type="button">
        </h:commandButton>

また、ボタンのクリック時に呼び出され、バッキング Bean メソッドを呼び出す jsFunction もありました。バッキング Bean は、addMessage メソッドを使用して FacesMessages を追加していました。

<a4j:jsFunction name="finishPurchase" action="finish" render="purchaseForm"/>

render="purchaseForm"すべてのタグがこのフォームにネストされているため、解決策は追加することでした。

于 2013-10-10T09:26:52.483 に答える