Сервлеты, меняется язык только со второго нажатия по ссылке, почему?

Вот так я добавил на страницу бандл

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<fmt:setLocale value="${cookie['lang'].value}"/>
<fmt:setBundle basename="messages"/>

Вот фильтр, который добавляет кукис lang в response

    @WebFilter("/*")
public class CookieLocaleFilter implements Filter  {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;

        if (req.getParameter("locale") != null) {
            Cookie cookie = new Cookie("lang", req.getParameter("locale"));
            res.addCookie(cookie);
        }

        chain.doFilter(request, response);
    }
}

Вот так вот я меняю язык

<li><a href="?locale=en"><fmt:message key="label.lang.en" /></a></li>
<li><a href="?locale=ua"><fmt:message key="label.lang.ua" /></a></li>

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

не меняет значение абсолютно. На второе нажатие по ссылке - уже меняется язык. Что я делаю не так?

P.S. Объясняю подробнее: Допустим, я перехожу по ссылке ?locale=ua.

<c:out value="${cookie['lang'].value}"/>

Выводит en, первое нажатие - ничего ( только куки в браузере появились ), второе нажатие - поменялся вывод на ua Такое чувство, что куки читаются только со второго перехода на страницу. Или страница загружается как-то раньше обновлений куки.


Ответы (0 шт):