0

我最近开始在我的 spring mvc 4 + hibernate 4 + tiles 3 项目中集成数据表。

我希望它显示具有各种语言支持的标题。

所以我从这个链接开始。

根据此页面建议我的标题显示???key???消息。

我想Id在列标题中显示,但它正在显示???table.header.id???

这个链接

如果在捆绑包中找不到密钥,则 ???key??? 消息将显示在列标题中。

但我已经把关注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=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

4

1 回答 1

1

关于您的消息的位置

您似乎使用 Spring ResourceBundleMessageSourcewithglobal作为基本名称。因此,将标题列的所有翻译放在文件中是有意义的global_*.properties

关于???key???留言

原来是 v0.10.0 中引入的一个错误。

等待下一个版本发布,有一个解决方法,但只能使用 DOM 源。以下是步骤。

titleKey1)您将使用<spring:message>标签而不是使用列属性。从理论上讲,它们做的事情完全相同:在您配置的资源包中查找资源。

首先在 JSP 中声明 Spring taglib:

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

2)然后你需要更新蒲公英数据表标签库的使用。作为一种解决方法,您可以使用<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如果您需要访问正在迭代的集合的对象,则需要添加table 属性,因为它是使用<c:out>JSTL 的标记完成的
  • 需要去掉propertycolumn 属性,否则<datatables:column>标签的内容不会被评估

这是一项非常少回报的大量工作——很抱歉——但等待下一个版本发布,至少它可以工作。添加了一个新问题

如果您使用AJAX source+ server-side processing

先做一个变量

<spring:message code="table.header.id" var="titleId" /> 

并将其添加到

<datatables:column title="${titleId}" property="userId" />

这里也有一个修复程序。请升级到 0.10.1-SNAPSHOT版本。

(StackOverflow 要求的免责声明:我是蒲公英的作者)

于 2014-06-03T14:48:51.997 回答