Повторное отображение сообщения об ошибке RichFaces после запроса ajax - PullRequest
2 голосов
/ 19 июля 2010

Я использую пользовательский javacode, называемый ajax, который выполняет некоторую обработку на сервере.В этом процессе могут возникать различные ошибки, которые я добавляю к FacesContext через addMessage().Я хочу отображать эти сообщения в том же теге <rich:messages>, который я использую для моих ошибок проверки.

Знаете ли вы, как отобразить эти сообщения в теге <rich:messages> после выполнения ajax-запроса?

Моя первоначальная идея заключалась в добавлении <a4j:jsFunction name="richDisplayError" reRender="messages" /> к разметке и вызове richDisplayError, когдазапрос завершен, но кажется, что панель сообщений пуста.

Ответы [ 3 ]

4 голосов
/ 20 июля 2010

<rich:messages> имеет ajaxRendered, установленный по умолчанию на true. Так что проблема кроется в другом. Может быть:

  • вы перенаправляете, а не пересылаете, а сообщения теряются
  • вы на самом деле не добавляете сообщения (проверьте с помощью debug)
  • у вас разные / отсутствуют представления / подпредставления
2 голосов
/ 25 августа 2010

Например, на вашей странице:

    <a4j:commandButton value="Action"
           limitToList="true" 
           action="#{mybean.action}"
           reRender="mymessages">
    </a4j:commandButton>
    <a4j:outputPanel ajaxRendered="true">
       <h:messages id="mymessages"  />
    </a4j:outputPanel>

тогда в вашем бобе:

public void action(){                         
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("hello world")); 
}    
0 голосов
/ 12 июня 2014

Вам нужно 3 вещи:

1-й : объявите свое сообщение об ошибке в файле "\ resources \ bundle \ errorMessages.properties", например:

errorMsgToDisplay.errName = Your Error Message Here

2nd : объявите переменную BUNDLE в коде класса:

private static final ResourceBundle BUNDLE = ResourceBundle.getBundle("/bundle/errorMessages");

3-й : показать сообщение (например, после условия)

if  ( condition ) {
FacesContext.getCurrentInstance().addMessage("", new FacesMessage(FacesMessage.SEVERITY_ERROR, 
BUNDLE.getString("errorMsgToDisplay.errName"),
BUNDLE.getString("errorMsgToDisplay.errName")));
}
...