我最近开始在我的spring mvc 4 + hibernate 4 + tiles 3 Project中集成datatables。
我希望它显示具有各种语言支持的标题。
所以我从这个link开始。
根据此页面建议我的标题显示???key???
消息。
我想在列标题中显示Id
,但它显示???table.header.id???
。
这link说
如果在捆绑中找不到密钥,??? ??? ???消息将显示在列标题中。
但我已在datatables.properties
i18n.locale.resolver = com.github.dandelion.datatables.extras.spring3.i18n.SpringLocaleResolver
global.i18n.message.resolver = com.github.dandelion.datatables.extras.spring3.i18n.SpringMessageResolver
也放入global_en.properties
table.header.id =编号
我还将同一个文件复制为global.properties
..但没有效果。
我的jsp文件包含
<datatables:table id="users" ...>
<datatables:column titleKey="table.header.id" property="userId" />
<datatables:table />
我的资源文件夹结构是
我应该把table.header.id=Id
??
需要任何帮助。提前谢谢。
注意:我正在使用AJAX source
+ server-side processing
。
答案 0 :(得分:1)
您似乎使用带有ResourceBundleMessageSource
的Spring global
作为基本名称。因此,将标题列的所有翻译放在global_*.properties
文件中是有意义的。
???key???
消息事实证明这是v0.10.0中引入的错误。
等待下一个版本发布,有一种解决方法,但只能使用DOM源。 以下是步骤。
1)您将使用titleKey
标记,而不是使用<spring:message>
列属性。从理论上讲,它们完全相同:在配置的资源包中查找资源。
首先在JSP中声明Spring taglib:
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
2)然后,您需要更新Dandelion-Datatables标记库的用法。要解决此问题,您可以使用<datatables:columnHead>
(docs here)标记在列标题中插入任何内容。
只需使用如下:
<datatables:table id="users" ... row="user" >
...
<datatables:column>
<%-- Everything inside this tag will only appear in the header column --%>
<datatables:columnHead>
<spring:message code="table.header.id" /> <== this will appear in the column header only
</datatables:columnHead>
<%-- Everything else will appear in all cells --%>
<c:out value="${person.id}" /> <== this will appear in all column cells
</datatables:column>
...
<datatables:table />
一些观察结果:
row
表属性,因为它是使用JSTL的<c:out>
标记完成的property
列属性,否则将不会评估<datatables:column>
标记的内容对于很少的回报,这是很多工作 - 对不起 - 但等待下一个版本发布,至少它是有效的。 已添加new issue。
AJAX source
+ server-side processing
。先变量
<spring:message code="table.header.id" var="titleId" />
并将其添加到
中<datatables:column title="${titleId}" property="userId" />
此外,我们还提供了here修复程序。请升级到0.10.1-SNAPSHOT
版本。
(StackOverflow要求免责声明:我是蒲公英的作者)