ResourceBundleMessageSource 解决错误

发布于 2024-10-14 02:02:32 字数 764 浏览 2 评论 0原文

我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

可是我不能没有你 2024-10-21 02:02:32

如果消息应该在标签内解析,则使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文