valueChangeListener Не срабатывает при добавлении атрибута рендеринга / отключения - PullRequest
0 голосов
/ 24 ноября 2011

У меня есть следующий код:

        <h:selectOneMenu id="countrycode"
                styleClass="Width300"
                value="#{customer.countrycode}"
                valueChangeListener="#{customer.countrycodechange}"
                onchange="submit()"
                immediate="true"
                rendered="#{customer.validcountry}">
                <f:selectItem itemValue="None"
                    itemLabel="-------Select a Country------" />
                <f:selectItem itemValue="AU" itemLabel="Australia" />
                <f:selectItem itemValue="NZ" itemLabel="New Zealand" />
        </h:selectOneMenu>

ValueChangeListener работает, только если я пропущу визуализированный атрибут, с визуализированным атрибутом countrycodechange никогда не будет запущен!Это можно обойти?

То же самое верно для добавления атрибута disabled, который останавливает valueChangeListener от запуска.Моя valueChangeListener боб имеет:

    public void countrycodechange (ValueChangeEvent vce) {

        PhaseId phaseId = vce.getPhaseId();
        if (phaseId.equals(PhaseId.ANY_PHASE))
        {
            vce.setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
            vce.queue();
        }
        else if (phaseId.equals(PhaseId.UPDATE_MODEL_VALUES))
        {
            ...

любая помощь будет оценена.

1 Ответ

2 голосов
/ 24 ноября 2011

Входные компоненты будут обрабатываться только тогда, когда их атрибуты rendered и disabled оцениваются соответственно true и false во время отправки формы.Таким образом, вы должны убедиться, что #{customer.validcountry} оценивает то же самое при отправке формы, как и при отображении формы.По-видимому, в вашем случае bean-компонент является областью запроса, или isValidcountry() зависит от параметра области запроса, который не сохраняется должным образом при отправке формы.Вам нужно убедиться, что вы сохраняете то же условие при отправке формы.

В JSF 2.0 это было бы вопросом помещения бина в область представления вместо области запроса.Однако, видя ваш взлом valueChangeListener, я думаю, что вы все еще используете JSF 1.x, который еще не имеет области просмотра.Правильное решение сложно предложить, не видя остальной код.По крайней мере, для меня не имеет смысла отображать атрибут "является действительной страной?"в то время как компонент ввода сам должен выбрать действительную страну.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...