Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > JSF как в бине полуить текущий outcome?


Автор: korob2001 15.6.2023, 15:44
Привет!
Подскажите пожалуйста, как можно получить в CDI бине текущий outcome? В общем, есть несколько JSF страниц, на каждой странице есть ссылки <h:link>, для смены локали.
Код

<h:link outcome="#{localeChanger.changeLocale()}?lang=en">
    <h:graphicImage library="images" name="flag_en.png"/>
</h:link>
<h:link outcome="#{localeChanger.changeLocale()}?lang=ru">
    <h:graphicImage library="images" name="flag_ru.png"/>
</h:link>

Метод changeLocale() в бине
Код

public String changeLocale() {
    FacesContext context = FacesContext.getCurrentInstance();
    Map<String, String> params = context.getExternalContext().getRequestParameterMap();
    if (params.containsKey("lang")) {
        context.getViewRoot().setLocale(Locale.forLanguageTag(params.get("lang")));
    }
    // Вот здесь вместо фиксированного outcome index, мне нужно вернуть текущий outcome, что бы при смене языка
    // не переходить на главную страницу
    return "index";
}

Получить адрес страницы могу
Код

String pathInfo = context.getExternalContext().getRequestPathInfo();

Впринципе и разобрать могу эту строку и вытащить оттуда имя страницы (outcome), но только, что-то мне подсказывает, что это самый лучший вариант. Может будут у кого-нить другие варианты переключения локали методом GET?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)