蒲公英Datatables i18n弹簧解析器无法正常工作

时间:2014-06-03 09:44:18

标签: spring spring-mvc internationalization datatables dandelion

我最近开始在我的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 />

我的资源文件夹结构是

res structure

我应该把table.header.id=Id ??

放在哪里

需要任何帮助。提前谢谢。

注意:我正在使用AJAX source + server-side processing

1 个答案:

答案 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要求免责声明:我是蒲公英的作者)