ValueChangeEvent не получает новое значение - PullRequest
0 голосов
/ 17 октября 2019

Я использую JSF 2.2.13 и PrimeFaces 6.1.1 в моем проекте. И пытаясь создать простые символы selectOneMenu, который изменяет locale.But, когда valueChangeListener запущен - ValueChangeEvent всегда имеет значение null newValue.

ValeuChangeEvent:
ValeuChangeEvent

Вот мое selectOneMenu:

<p:selectOneMenu value="#{localeBean.localeCode}" id="lang" valueChangeListener="#{localeBean.valueChangeListener}">
    <f:selectItem itemValue="pl" itemLabel="${msg['page.login.language.pl.label']}"/>
    <f:selectItem itemValue="en" itemLabel="${msg['page.login.language.en.label']}"/>
    <p:ajax event="itemSelect" update="@this"/>
</p:selectOneMenu>

И мой LocaleBean:

@Named
@SessionScoped
public class LocaleBean implements ILocaleBean, Serializable {
    private String           localeCode;
    private Locale           locale;
    private boolean          initiated = false;
    private static final Log log       = LogFactory.getLog(LocaleBean.class);

    @PostConstruct
    public void init() {
        setDefaultLocale();
        this.localeCode = locale.getLanguage();
        initiated = true;

    }

    public void setLocaleCode(String localeCode) {
        this.localeCode = localeCode;
    }

    public String getLocaleCode() {
        if (!initiated) {
            init();
        }
        return getLocale().toString();
    }

    public void valueChangeListener(ValueChangeEvent event) {

        setLocaleFromString(event.getNewValue().toString());
    }

    @Override
    public Locale getLocale() {
        return locale;
    }

}

1 Ответ

0 голосов
/ 17 октября 2019

Вы должны использовать event="valueChange" вместо event="itemSelect" или оставить его пустым, как рекомендует Хольгер.

Или, как указано в документации:

Если событие не является конкретным,событие по умолчанию называется. В дополнение к стандартным событиям, таким как «изменение», пользовательское событие «itemSelect» также доступно для вызова при выборе элемента из выпадающего списка.

Событие по умолчанию: valueChange

При выбореслучается, выбранное значение еще не было отправлено, поэтому слушатель не сможет увидеть новое значение.

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