2011-01-26 49 views
3

我有一个JSP-Tagfile呈现html-header并定义了我的Javascript/Stylesheet资源。ResourceBundleMessageSource解决错误

<%@ 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加载邮件,它只会尝试根据当前语言的属性解析邮件代码,并且回退到默认邮件不起作用。

+1

很难相信文件名的一部分会产生这样的差异。你是否检查过这个问题不属于任何缓存的Java脚本? – Ralph 2011-01-26 16:42:12

回答

1

如果消息应该在标签内解析,则使用在DispatcherServlet中定义的ApplicationContext。否则将使用ContextLoaderListener的ApplicationContext(根应用程序上下文)。

为了解决这个问题,我将ResourceBundleMessageSource移动到由ContextLoaderListener加载的配置中。