[Oracle ADF] Oracle ADF Сброс локали при обновлении страницы по F5 или по кнопке Обновить

Была проблема.
Создал тикет.
https://community.oracle.com/message/14592622#14592622

Мы при логине устанавливали программно локаль пользователя в зависимости от настроек учетной записи пользователя в базе данных.

Устанавливали приблизительно так:

String language = "en";  
Locale locale = new Locale(language);   
FacesContext.getCurrentInstance().getViewRoot().setLocale(locale);

Тимо Хан написал, что по F5 viewRoot пересоздается, а мы при этом не вызываем повторо установку нужной локали.

Наш тим лид победил проблему следующим образом:

src/META-INF/adf-settings.xml

<?xml version="1.0" encoding="UTF-8" ?>
<adf-settings xmlns="http://xmlns.oracle.com/adf/settings">
    <adfc-controller-config xmlns="http://xmlns.oracle.com/adf/controller/config">
        <lifecycle>
            <phase-listener>
                <listener-id>LocalizationPhaseListener</listener-id>
                <class>beans.filters.LocalizationFilter</class>
            </phase-listener>
        </lifecycle>
    </adfc-controller-config>
    <dvt-faces-settings xmlns="http://xmlns.oracle.com/dss/adf/faces/settings">
        <geomap id="mapConfig1" mapViewerUrl="map" geocoderUrl="mapgeocoder"/>
    </dvt-faces-settings>
</adf-settings>



package org.javadev.rim.beans.filters;

import java.util.Locale;

import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import javax.servlet.http.HttpServletRequest;

import oracle.adf.controller.v2.lifecycle.Lifecycle;
import oracle.adf.controller.v2.lifecycle.PagePhaseEvent;
import oracle.adf.controller.v2.lifecycle.PagePhaseListener;


public class LocalizationFilter implements PagePhaseListener {
    @SuppressWarnings("compatibility:6704449372756164727")
    private static final long serialVersionUID = 1685662412939062645L;

    @Override
    public void afterPhase(PagePhaseEvent pagePhaseEvent) {
        if (pagePhaseEvent.getPhaseId() == Lifecycle.PREPARE_RENDER_ID) {
            ExternalContext ectx = FacesContext.getCurrentInstance().getExternalContext();
            HttpServletRequest request = (HttpServletRequest) ectx.getRequest();

            String locale = "en";

                Locale locale = new Locale(locale);
                FacesContext.getCurrentInstance()
                            .getViewRoot()
                            .setLocale(locale);
        }
    }

    @Override
    public void beforePhase(PagePhaseEvent pagePhaseEvent) {
    }
}