gpt4 book ai didi

jsp - 如何从 JSP 访问 Locale?

转载 作者:行者123 更新时间:2023-12-03 23:08:16 25 4
gpt4 key购买 nike

我想根据当前语言环境的值包含一个 js 文件。我尝试从 JSP 访问它,如下所示:

<%@ page import="java.util.Locale" %>  
<% if( ((Locale) pageContext.getAttribute("org.apache.struts.action.LOCALE",PageContext.REQUEST_SCOPE)).getLanguage().equals("de")) { %>
<script src="../themes/administration/js/languages/i18nDE.js" type="text/javascript"> </script>
<% } else { %>
<script src="../themes/administration/js/languages/i18nEN.js" type="text/javascript"> </script>
<% } %>

但是,我收到了 java.lang.NullPointerException因为 pageContext.getAttribute("org.apache.struts.action.LOCALE",PageContext.REQUEST_SCOPE)NULL .

有谁知道我该如何解决这个问题?

最佳答案

目前我正在使用这个:

<c:set var="localeCode" value="${pageContext.response.locale}" />

稍后可以使用 ${localeCode} 访问此信息
  • 脚本模式 ,气馁!见 Why not use Scriptlets出于不使用脚本的原因。
  • localeCode可以在 内查询变量脚本 和:
    <%
    Object ob_localeCode = pageContext.getAttribute("localeCode");
    if (ob_localeCode != null) {
    String currentLanguageCode = (String) ob_localeCode;
    }
    //more code
    %>
  • 无脚本模式 正确的方法。见 How to avoid Java Code in JSP-Files?在这里。

  • 我目前正在使用 spring 2.5 配置。

    因此,在此之后,回到您最初的问题,您可以实现以下内容:
    <c:set var="localeCode" value="${pageContext.response.locale}" />
    <c:choose>
    <c:when test="$localecode == 'de' }">
    <script src="../themes/administration/js/languages/i18nDE.js" type="text/javascript"> </script>
    </c:when>
    <c:otherwise>
    <script src="../themes/administration/js/languages/i18nEN.js" type="text/javascript"> </script>
    </c:otherwise>
    </c:choose>

    或者如果你真的想用一些简短的代码来打动你的同事,你可以这样做:
    <c:set var="localeCode" value="${fn:toUpperCase(pageContext.response.locale)}" />
    <c:set var="availLanguages" value="EN,DE" />
    <c:if test="${!fn:contains(availLanguages,localeCode)}">
    <c:set var="localeCode" value="EN" />
    </c:if>

    <script src="../themes/administration/js/languages/i18n{$localeCode}.js" type="text/javascript"> </script>

    关于jsp - 如何从 JSP 访问 Locale?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/333729/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com