我有 JSTL Java 代码,可以读取请求 header 接受语言参数
<c:set var="locale" value="<%= request.getHeader("Accept-Language") %>"/>
变量区域设置的值根据浏览器语言设置的顺序而变化。
有时候是这样的
en-GB,en;q=0.8,en-AU;q=0.6,en-US;q=0.4,en-CA;q=0.2
有时候是这样的
en,en-GB;q=0.8,en-AU;q=0.6,en-US;q=0.4,en-CA;q=0.2
无论哪种情况,我都想读取第一次出现的区域设置,例如 en-XX。在本例中为 en-GB。
我正在使用 split 函数,但我无法找出使用它来完成此任务的正确方法。
我这样做了,只有当 en-XX 是字符串中的第一个时它才有效
<c:set var="locale" value="<%= request.getHeader("Accept-Language").split(",")[0] %>"/>
非常感谢将正则表达式与 split 函数(或任何其他函数)合并方面的任何帮助。
谢谢
最佳答案
两个答案:
- 不要这样做(在 JSTL 中),但如果确实需要,请在 servlet 代码中这样做
- 不要这样做,而是使用 request.getLocale()
request.getLocale()
:
Returns the preferred Locale that the client will accept content in, based on the Accept-Language header.
做你想做的事可能是更好的选择。
关于Java JSTL 拆分函数正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35279901/