как вы читаете информацию о локали из сессии? - PullRequest
1 голос
/ 12 мая 2009

Следующий бит кода устанавливает параметр Locale from lang в строке запроса.

<c:if test="${param['lang'] != null}">
    <fmt:setLocale value="${param['lang']}" scope="session"/>
</c:if>

Как мне теперь прочитать эту переменную?

Я знаю, это немного нубиш.

Мне нужно немного условной логики для отображения одной языковой ссылки, если локальная не была установлена ​​в области сеанса с использованием fmt:setLocale, и другой, если она была установлена ​​в определенную локаль.

Спасибо

Ответы [ 3 ]

4 голосов
/ 12 мая 2009

Попробуйте это:

<c:if test="${pageContext.request.locale.language == 'en'}"> 
    <a href="link1">Link 1</a> 
</c:if> 
<c:if test="${pageContext.request.locale.language != 'en'}"> 
    <a href="link2">Link 2</a> 
</c:if> 
2 голосов
/ 12 мая 2009
<c:choose>
    <c:when test="${sessionScope['javax.servlet.jsp.jstl.fmt.locale.session'] eq 'en_CY'}">
        a href="?lang=en_GB">English</a>
    </c:when>
    <c:otherwise>
        <a href="?lang=en_CY">Cymraeg</a>
    </c:otherwise>
</c:choose>

это работает, но есть ли лучший способ написать?

<c:when test="${sessionScope['javax.servlet.jsp.jstl.fmt.locale.session'] eq 'en_CY'}">
0 голосов
/ 12 мая 2009
<c:choose>
    <c:when test="${pageContext.response.locale eq 'en_CY'}">
        <a href="?lang=en_GB">English</a>
    </c:when>
    <c:otherwise>
        <a href="?lang=en_CY">Cymraeg</a>
    </c:otherwise>
</c:choose>

это работает только на своей странице.

но поскольку он читает из pageContext, он не будет работать на других страницах, читая его из sessionScope (где он устанавливается fmt:setLocale).

Как бы я прочитал это из sessionScope?

...