title: Primefaces p:ajax and remoteCommand does not update growl messages
body: <p>In the following example, I modify a datatable using p:ajax then use remoteCommand to update the table. That works. However, I would also like to update growl msgs in the event of an error or success. That doesn't work.</p>
  
  <p>I see from the examples if a button calls an action, then calls remoteCommand, the growl msgs update. However, that won't give me what I need from the ajax cellEdit in a datatable.</p>
  
  <p>How can I update the growl messages from a p:ajax command.</p>
  
  <pre><code>&lt;html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:p="http://primefaces.org/ui"
  &gt;
  
  &lt;h:head/&gt;
  
  &lt;h:form id="formId"&gt;
  
      &lt;p:growl id="msgs" showDetail="true" /&gt;
      &lt;h:body&gt;
          &lt;h:panelGrid&gt;
              &lt;!-- Updates wordsId table but not msgs --&gt;
              &lt;p:remoteCommand name="onCellEditRemote" update="wordsId msgs"/&gt;
  
              &lt;p:dataTable id="wordsId" var="word" value="#{remoteMessageBean.words}" editable="true" editMode="cell"&gt;
                  &lt;!-- does not update msgs --&gt;
                  &lt;p:ajax event="cellEdit" listener="#{remoteMessageBean.modifyWordOnCellEdit}"  oncomplete="onCellEditRemote()" update="formId:msgs"/&gt;
  
                  &lt;p:column headerText="Modify" &gt;
                      &lt;p:outputLabel value="#{word}" /&gt;
                  &lt;/p:column&gt;
                  &lt;p:column headerText="Modify" &gt;
                      &lt;p:cellEditor&gt;
                          &lt;f:facet name="output"&gt;&lt;h:outputText value=""/&gt;&lt;/f:facet&gt;
                          &lt;f:facet name="input"&gt;
                              &lt;p:inputText id="modelInput" value="#{remoteMessageBean.modifyWord}"/&gt;
                          &lt;/f:facet&gt;
                      &lt;/p:cellEditor&gt;
                  &lt;/p:column&gt;
              &lt;/p:dataTable&gt;
          &lt;/h:panelGrid&gt;
  
          &lt;p:remoteCommand name="rc" update="msgs" /&gt;
          &lt;p:commandButton type="button" action="#{remoteMessageBean.buttonAction}" value="Doesnt Work" icon="ui-icon-refresh" update="msgs" /&gt;
  
          &lt;p:remoteCommand name="rc2" update="msgs" action="#{remoteMessageBean.buttonAction}" /&gt;
          &lt;p:commandButton type="button" onclick="rc2()" value="Works" icon="ui-icon-refresh" /&gt;
  
  
      &lt;/h:body&gt;
  &lt;/h:form&gt;
  &lt;/html&gt;
  
  
  
  @ManagedBean
  @SessionScoped
  public class RemoteMessageBean {
      private static Logger logger = Logger.getLogger(RemoteMessageBean.class);
      private String modifyWord;
      private List&lt;String&gt; words;
  
      public RemoteMessageBean() {
          words = new ArrayList&lt;&gt;();
          words.add("word1");
          words.add("word2");
          words.add("word3");
      }
  
      public void modifyWordOnCellEdit(CellEditEvent event) {
          logger.debug(event);
          getWords().add(getModifyWord());
          logger.debug("");
          FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "adding " + getModifyWord(), null);
          FacesContext.getCurrentInstance().addMessage(null, msg);
          setModifyWord(null);
      }
  
      public void buttonAction() {
          logger.debug("");
          FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "buttonAction", null);
          FacesContext.getCurrentInstance().addMessage(null, msg);
        }
  
      public String getModifyWord() {
          return modifyWord;
      }
  
      public void setModifyWord(String modifyWord) {
          this.modifyWord = modifyWord;
      }
  
      public List&lt;String&gt; getWords() {
          return words;
      }
  
  }
  </code></pre>