не обновляет значения модели при втором запуске? - PullRequest
0 голосов
/ 03 сентября 2011

У меня есть следующее на странице 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. Ни одно из сообщений валидатора не отображается.

1 Ответ

1 голос
/ 03 сентября 2011

Проблема оказалась следующей:

<f:metadata>
    <f:viewParam name="familyId" value="#{weighFamilyBacking.familyId}" required="true"></f:viewParam>
    <f:event type="preRenderView"
        listener="#{weighFamilyBacking.loadFamily}" />
</f:metadata>

Эта страница принимает параметр familyId в качестве параметра, и он был указан как обязательно . После того как я убрал это все работало как положено. Я предполагаю, что, поскольку параметр был там изначально, он работал в первый раз. Затем в последующих публикациях параметр familyId больше не существовал (поскольку он не был скрытым полем формы), и поэтому я прыгал с права проверки на этап визуализации, поскольку проверка требуемого «viewParam» не удалась.

...