ResourceBundleMessageSource 解决错误
我有一个 JSP 标记文件,它呈现 html 标头并定义我的 Javascript/样式表资源。
<%@ tag language="java" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<html>
<head>
<link rel="stylesheet" type="text/css" href="<spring:theme code="main.css"/>"/>
<script type="text/javascript" src="<spring:theme code="default.js"/>"></script>
...
</html>
现在我不想加载 javascript 的 i18n 消息。
var button_ok='<spring:message code="js.button.ok" javaScriptEscape="true"/>';
当我在标记文件中使用它时,它会按预期工作并解析消息,即使只有默认的 messages.properties
(后备)。
但是,如果我使用外部 javascript 文件 lang.js.jsp
加载消息,它只会尝试根据当前语言的属性解析消息代码,并且回退到默认语言不起作用。
I have a JSP-Tagfile which renders the html-header and defines my Javascript/Stylesheet resources.
<%@ tag language="java" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<html>
<head>
<link rel="stylesheet" type="text/css" href="<spring:theme code="main.css"/>"/>
<script type="text/javascript" src="<spring:theme code="default.js"/>"></script>
...
</html>
Now i wan't to load a i18n messages for the javascript stuff.
var button_ok='<spring:message code="js.button.ok" javaScriptEscape="true"/>';
When i use this inside the tag-file it works as supposed and resolves the messages, even if there is only a default messages.properties
(fallback).
But if i load the messages with an external javascript file lang.js.jsp
it only tries to resolve the message code against the properties for the current language and the fallback to the default one is not working.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果消息应该在标签内解析,则使用 DispatcherServlet 中定义的 ApplicationContext。否则,使用 ContextLoaderListener 中的 ApplicationContext(根应用程序上下文)。
为了解决这个问题,我将 ResourceBundleMessageSource 移动到由 ContextLoaderListener 加载的配置中。
If the message should be resolved inside the tag, the ApplicationContext defined within the DispatcherServlet is used. Otherwise the ApplicationContext from the ContextLoaderListener is used (root application context).
To solve the problem i moved the ResourceBundleMessageSource into the configuration which is loaded by the ContextLoaderListener.