如何从 JSP 访问区域设置?
我想根据当前区域设置的值包含一个 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
。
有谁知道我该如何解决这个问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
目前我正在使用这个:
稍后可以使用
${localeCode}
可以通过以下方式在 scriptlet 内查询
localeCode
变量:我现在使用的是 spring 2.5 配置。
因此,接下来,回到你原来的问题,你可以实现类似的东西:
或者如果你真的想使用一些简短的代码来给你的同事留下深刻的印象,你可以这样做:
At the moment I am using this :
This can later be access by using
${localeCode}
The
localeCode
variable can be queried inside a scriptlet with:I am using spring 2.5 config at the moment.
So following this, coming back to your original question you can implement something like:
or if you really want to use some short code to impress your colleagues, you can do:
在Struts2中尝试
in Struts2 try
Struts 将区域设置放入会话中。 获取 Locale 的正确方法是:
Struts puts locale in the session. The correct way to get the Locale is:
我在 Struts 1.x 文档中找不到常量 org.apache.struts.action.LOCALE - 应该是
org.apache.struts.Globals.LOCALE_KEY
? 或者其他LOCALE_KEY
常量之一?编辑:
org.apache.struts.action.LOCALE
是org.apache.struts.Global.LOCALE_KEY
的值 - 所以该值本身用作密钥,应该不是问题。验证
Request
中是否设置了LOCALE
。 我的理解是,如果设置了LOCALE_KEY
,则在PageContext.SESSION_SCOPE
中设置。I can't find a constant
org.apache.struts.action.LOCALE
in the Struts 1.x documentation - should it beorg.apache.struts.Globals.LOCALE_KEY
? Or one of the otherLOCALE_KEY
constants?Edit:
org.apache.struts.action.LOCALE
is the value of theorg.apache.struts.Global.LOCALE_KEY
- so the value itself, used as a key, shouldn't be the problem.Verify that a
LOCALE
is being set in theRequest
. My understanding is that theLOCALE_KEY
is set inPageContext.SESSION_SCOPE
if it is set.在Struts2中,使用EL我成功地使用:
例如输出Locale的值:
In Struts2, using EL I successfully used:
E.g. to output the value of the Locale:
我添加了新的示例来进一步澄清这一点,因为这篇文章对我没有多大帮助。
要从 jsp 获取语言环境:
它是一个 ServletRequest 方法 a 根据 Accept-Language 标头返回客户端将接受内容的首选语言环境,
返回 Struts2 框架的语言环境,该语言环境可能与前面的例子。 例如,如果您传递参数 request_locale=de ...
struts2 #request.locale 将更改为德语,覆盖原始 Accept-Language 标头的值
I added new examples to clarify this a bit more because this post didn't help me much.
To get locale from jsp:
it's a ServletRequest Method a Returns the preferred Locale that the client will accept content in, based on the Accept-Language header,
Returns the locale for the Struts2 Framework, that may or may not be the same as in the previous example. if you pass the param request_locale=de for instance...
the struts2 #request.locale will changed to german overriding the value of the original Accept-Language header
尝试用这个
Try with this
肯·G.指出了答案。
应该使用
Ken G. pointed to the answer.
should be used instead
获取
locale
的两种最佳方法是使用由操作继承的 Action 支持的getLocale
到 JSP 上:
或当使用 此方法。
它不同于:
${pageContext.response.locale}
The two best ways to get
locale
is by using thegetLocale
of Action support inherited by an action, onto a JSP:<s:hidden name="locale"/>
or<s:property value"%{locale}"/>
When locale has been changed with this method.
It is not the same as:
${pageContext.response.locale}