У меня есть следующее на странице JSF 2.0:
<rich:column styleClass="tbl-weight" id="weight">
<f:facet name="header">
<h:outputText value="Weight" />
</f:facet>
<h:outputLabel value="lbs" for="lbs" />
<h:inputText size="3" id="lbs" label="lbs"
validatorMessage="Lbs must be from 0 to 999"
value="#{weighFamilyBacking.weightDecoratorMap[child].lbs}">
<f:validateLongRange minimum="0" maximum="999" />
<f:ajax event="change" render="@form" immediate="true"/>
</h:inputText>
<h:outputLabel value="oz" for="oz" />
<h:inputText size="3" id="oz" label="oz"
validatorMessage="Oz must be from 1 to 15"
value="#{weighFamilyBacking.weightDecoratorMap[child].oz}">
<f:validateLongRange minimum="0" maximum="15" />
<f:ajax event="change" render="currentPayoutOutput" />
</h:inputText>
<h:message styleClass="error" for="lbs" />
<h:message styleClass="error" for="oz" />
</rich:column>
<rich:column styleClass="tbl-payout" id="currentPayout">
<f:facet name="header">
<h:outputText id="payout" value="Payout" />
</f:facet>
<h:outputText id="currentPayoutOutput"
value="#{weighFamilyBacking.weightDecoratorMap[child].payout}" />
</rich:column>
Если посмотреть на это, то f: ajax на входах "lbs" и "oz" должен обновить заданные значения и затем отобразить currentPayoutOutput. Это прекрасно работает только при первом изменении поля ввода.
Это тот же результат, если я использую @form или currentPayoutOutput. Используя слушатель фазы, я вижу, как он переходит от processValidations прямо к renderResponse. Ни одно из сообщений валидатора не отображается.