2008-09-18 134 views
-1

我使用的是freemarker,SiteMesh和Spring框架。 对于我使用$ {requestContext.getMessage()}从message.properties中获取消息的页面。但对于装饰者来说,这是行不通的。我应该怎么做才能让sitemesh的国际化工作?国际化sitemesh

+0

你是什么意思时,你说什么它“不起作用”?您是否收到特定的错误讯息?它会从“大英百科全书”中返回一个随机页面而不是你想要的信息吗?它退出了吗?它挂了吗?它会召唤Yog Sothoth吗? – 2018-03-05 04:36:02

回答

2

您必须使用fmt taglib。

首先,为sitemesh添加taglib,并将fmt添加到修饰器的fisrt行。

<%@ taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator"%> 
<%@ taglib prefix="page" uri="http://www.opensymphony.com/sitemesh/page"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%> 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt"%> 
<fmt:setBundle basename="messages" /> 

在我的例子中,i18n文件是messages.properties。然后你需要使用fmt标签来使用消息。

<fmt:message key="key_of_message" /> 
0

如果你喜欢模板和freemarker中的servlet相反,你可以在你的模板中输入以下内容:

<#assign fmt=JspTaglibs["http://java.sun.com/jstl/fmt"]> 
<@fmt.message key="webapp.name" /> 

,并在您web.xml

<context-param> 
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name> 
    <param-value>messages</param-value> 
</context-param>