【问题标题】:how do you read locale information from session?你如何从会话中读取语言环境信息?
【发布时间】:2009-05-12 11:53:49
【问题描述】:

以下代码设置查询字符串的语言参数中的区域设置。

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

我现在如何读取该变量?

我知道它有点笨。

如果没有使用fmt:setLocale 在会话范围内设置本地语言链接,我需要一些条件逻辑来显示一种语言链接,如果它已设置为特定语言环境,则显示另一种语言链接。

谢谢

【问题讨论】:

    标签: java jsp internationalization jstl locale


    【解决方案1】:

    试试这个:

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

    【讨论】:

      【解决方案3】:
      <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>
      

      这仅适用于页面 itslef。

      但由于它是从 pageContext 读取的,因此无法通过从 sessionScope 读取它来处理其他页面(由fmt:setLocale 设置)。

      如何从 sessionScope 读取它?

      【讨论】:

        猜你喜欢
        • 2012-01-15
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 2021-07-04
        • 1970-01-01
        • 1970-01-01
        • 2010-09-06
        • 1970-01-01
        相关资源
        最近更新 更多