2013-05-16 2 views
1

У меня есть это a4j:jsFunction ниже и <h:message for="form" style="color:red" /> где-то еще на странице.Отображение сообщения об ошибке от a4j: jsFunction

<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.

ответ

1

С a4j:jsFunction вы просто выполняете вызов Ajax; представление не обновляется, а остальные компоненты будут продолжать свое предыдущее состояние.

Используйте атрибут reRender, чтобы принудительно обновить компонент h:message.

+0

Таким образом, я расширяю 'h: message' с id:' 'и добавил сообщение reRender = '' a4j: jsFunction'. Я также пробовал разные возможности, например. 'reRender' elemnt завернут arround' h: message'. Но мне не сработало. Что мне нужно переписать? – user1451130

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, которая будет называться по нажатию кнопки и вызова бэк метод компонента. Резервный боб добавления FacesMessages с использованием метода addMessage:

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

Решения было добавить render="purchaseForm", потому что все теги были вложены в этой форме.

Смежные вопросы