如何从 JSTL / 表达式语言中的 JSON 字符串中提取单个值?
How can I extract a single value, from a JSON String, in JSTL / Expression Language?
我正在我的一个 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'.
我需要以某种方式使用 JSON 方法,但我什至不知道是否可行。有人知道吗?
在我从事的项目中,我做了以下工作:
在 java 方面,将语言设置为可以在 JSP 中使用 getter 访问的成员变量。
您可以使用您设置的 cookie 或任何其他方式(用户输入、请求 header、...)
在 JSP get 中保留该值并将其用于呈现页面之前完成的任何本地化。
然后作为呈现页面的一部分包含本地化 java脚本数组:
...
<script>
var l10n = {
"language" : "${language}"
};
</script>
</body>
这样,在呈现页面后,您可以访问 l10n.language
语言(在 java 脚本中)
在另一种情况下,这或多或少是 Wordpress 处理 javascript 脚本本地化的方式。
我正在我的一个 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'.
我需要以某种方式使用 JSON 方法,但我什至不知道是否可行。有人知道吗?
在我从事的项目中,我做了以下工作:
在 java 方面,将语言设置为可以在 JSP 中使用 getter 访问的成员变量。
您可以使用您设置的 cookie 或任何其他方式(用户输入、请求 header、...)
在 JSP get 中保留该值并将其用于呈现页面之前完成的任何本地化。
然后作为呈现页面的一部分包含本地化 java脚本数组:
...
<script>
var l10n = {
"language" : "${language}"
};
</script>
</body>
这样,在呈现页面后,您可以访问 l10n.language
语言(在 java 脚本中)
在另一种情况下,这或多或少是 Wordpress 处理 javascript 脚本本地化的方式。