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:jsFunction你只是在执行一个 Ajax 调用;视图不会刷新,其他组件将继续保持之前的状态。

使用该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>

我还有 jsFunction 将在按钮单击和调用支持 bean 方法时调用。支持 bean 使用 addMessage 方法添加 FacesMessages:

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

解决方案是添加render="purchaseForm",因为所有标签都嵌套在此表单中。

于 2013-10-10T09:26:52.483 回答