Приемник Ajax PrimeFaces не выполняется, когда атрибут процесса указан для другого компонента

Когда я указываюprocess атрибутp:ajax тег, слушатель не выполняется. Если я опущуprocess атрибут, то слушатель вызывается, как и ожидалось.

Вот фрагмент кода:

<code><p:messages id="messages" />
<h:inputText id="inputToProcess" value="#{controller.inputToProcess}" />
<p:selectBooleanCheckbox id="testCheckbox" >
  <p:ajax event="change" process="inputToProcess"
    update="messages @this inputToUpdate"
    listener="#{controller.processChecked}" />
</p:selectBooleanCheckbox>
<h:inputText id="inputToUpdate" value="#{controller.inputToUpdate}" />
</code>

И контроллер:

<code>@javax.faces.bean.ManagedBean
@javax.faces.bean.ViewScoped
public class Controller implements Serializable {
  private String inputToProcess;
  private String inputToUpdate;
  //getters and setters

  public void processChecked(javax.faces.AjaxBehaviorEvent e) {
    // doing some stuff here
  }
}
</code>

Я прикрепилphaseListener для просмотра сANY_PHASE PhaseIdи вот что я заметил.

Когда я указываюprocess атрибут, значениеinputToProcess вход успешно установлен на контроллере на этапе обновления модели (исключений не возникает). ТогдаInvoke Application а такжеRender Response фазы выполняются, но слушатель не вызывается. Одна вещь, которую я заметил, это то, что флажок не установлен в конце. Но нет ошибок преобразования или проверки, потому что, как я уже сказал,Update Model а такжеInvoke Application фазы выполнены.

Если я опущуprocess атрибут, вот что я вижу: слушатель обычно вызывается во времяInvoke Application фаза (сimmediate по умолчанию - false), и затем выполняется `Render Response. Флажок успешно установлен.

Есть ли объяснение этому виду поведения?

Ответы на вопрос(1)

Ваш ответ на вопрос