你如何从会话中读取区域设置信息?

时间:2009-05-12 11:53:50

标签: java jsp internationalization jstl locale

以下代码在querystring上设置lang param的Locale。

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

我现在如何阅读该变量?

我知道它有点无趣。

如果未使用fmt:setLocale在会话范围中设置本地,则需要一些条件逻辑来显示一个语言链接,如果已将其设置为特定语言环境,则需要另一个语法链接。

由于

3 个答案:

答案 0 :(得分:4)

试试这个:

<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> 

答案 1 :(得分:2)

<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'}">

答案 2 :(得分:0)

<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中读取它?

相关问题