如何在JSTL/表达式语言中从JSON字符串中提取单个值?

如何在JSTL/表达式语言中从JSON字符串中提取单个值?,json,cookies,jstl,el,Json,Cookies,Jstl,El,我正在我的一个web应用程序中实现多语言。用户选择的语言保存在cookie中。我已经能够通过以下方式从这个cookie中提取内容: ${cookie.userdata.value} 我遇到的问题是,语言不是我存储在这个cookie中的唯一东西。还有一些用户上次访问通知的时间戳。cookie的完整值采用JSON格式: userdata={ "notificationsViewed":1509696860036, "documentNotifications

我正在我的一个web应用程序中实现多语言。用户选择的语言保存在cookie中。我已经能够通过以下方式从这个cookie中提取内容:

${cookie.userdata.value}
我遇到的问题是,语言不是我存储在这个cookie中的唯一东西。还有一些用户上次访问通知的时间戳。cookie的完整值采用JSON格式:

userdata={
          "notificationsViewed":1509696860036,
          "documentNotificationsViewed":1509696859896,
          "language":"en"
         }
我需要的只是
“en”

在其他情况下,我使用javascript和JSONParser来获取语言,但我有一种情况,如果能够使用JSTL/Expression语言获取语言,那将是非常棒的,但我一直找不到。到目前为止,我的尝试导致:

<c:set var="language">${cookie.userdata.value.language}</c:set>

javax.el.PropertyNotFoundException: The class 'java.lang.String' does not have the property 'language'.
${cookie.userdata.value.language}
javax.el.PropertyNotFoundException:类“java.lang.String”没有属性“language”。

我需要以某种方式使用JSON方法,但我甚至不知道这是否可行。有人知道吗?

在我参与的一个项目中,我做了以下工作:

在java端,将语言设置为可以在JSP中使用getter访问的meber变量

您可以使用设置的cookie或任何其他方式(用户输入、请求头等)来完成此操作

在JSP中,获取该值并在呈现页面之前将其用于任何本地化

然后,作为呈现页面的一部分,包含本地化javascript数组:

...
    <script>
    var l10n = {
        "language" : "${language}"
    };
    </script>
</body>
。。。
变量l10n={
“语言”:“${language}”
};
通过这种方式,在呈现页面后,您可以以
l10n.language
(javascript)的形式访问该语言


在另一个上下文中,Wordpress或多或少就是这样处理javascript脚本本地化的。

在页面呈现过程中,您希望在javascript或java(jsp)JSTL/EL中使用该语言指示符在哪里工作?javascript一旦在客户端浏览器中呈现,在大多数情况下,它在使用javascript时工作。但是,正如您在呈现页面时所说的,一些旧代码将更易于使用。请检查下面我的答案。我在那里解决了这两个问题。好吧,这很有效。不完全如我所料,但即使这是解决我的问题的一个办法,也是一个很好的办法,而且可以普遍适用于任何类似的情况。谢谢…现在已经完全实现了,包括翻译和一切。再次感谢