Tapestry5 网格组件中的翻译功能
Translator functionality in Tapestry5 Grid Componenet
今天我要问的是关于 Tapestry5 网格中数字格式的问题。
我在 Grid component that I need to format due to some rules that concerns decimal mark and thousands separator. For textfields I'm using translator defined for whole application (like in this 示例中有几个字段)但我不知道如何为网格获得相同的功能(或者即使它是可能的)。我想为我的整个网格提供相同的机制应用程序。
当然不是所有的数字网格字段都是货币,所以应该有某种可能性来配置它们。
我知道对于网格,我可以使用 ValueEncoder,但我认为这在那种情况下不起作用,因为它对网格中显示的整个对象进行编码,而不仅仅是一些已定义的字段。
还有一件事:我知道我可以定义每个字段以从方法中获取值并执行所有功能,但我正在寻找更灵活的东西 - 就像前面提到的 "translator" 文本字段。
您可以通过定义一个名为 xCell(其中 x 是列名称)的块 属性 来覆盖默认的网格单元格呈现行为。 documentation 给出了自定义 lastName 列呈现的示例。
<t:grid source="users" row="user">
<p:lastNameCell>
<t:pagelink page="user/view" context="user.id">${user.lastname}</t:pagelink>
</p:lastNameCell>
</t:grid>
这可以通过结合几件事来完成
- 一个DataTypeAnalyzer which produces a String datatype given a PropertyAdapter
- A DisplayBlockContribution 将数据类型映射到块(另请参阅 EditBlockContribution)。
- 将 DisplayBlockContribution 贡献给 BeanBlockSource
请注意,这不仅会影响网格,还会影响所有基于 bean 的组件(例如 BeanDisplay)。
快速启动示例here
今天我要问的是关于 Tapestry5 网格中数字格式的问题。 我在 Grid component that I need to format due to some rules that concerns decimal mark and thousands separator. For textfields I'm using translator defined for whole application (like in this 示例中有几个字段)但我不知道如何为网格获得相同的功能(或者即使它是可能的)。我想为我的整个网格提供相同的机制应用程序。
当然不是所有的数字网格字段都是货币,所以应该有某种可能性来配置它们。
我知道对于网格,我可以使用 ValueEncoder,但我认为这在那种情况下不起作用,因为它对网格中显示的整个对象进行编码,而不仅仅是一些已定义的字段。
还有一件事:我知道我可以定义每个字段以从方法中获取值并执行所有功能,但我正在寻找更灵活的东西 - 就像前面提到的 "translator" 文本字段。
您可以通过定义一个名为 xCell(其中 x 是列名称)的块 属性 来覆盖默认的网格单元格呈现行为。 documentation 给出了自定义 lastName 列呈现的示例。
<t:grid source="users" row="user">
<p:lastNameCell>
<t:pagelink page="user/view" context="user.id">${user.lastname}</t:pagelink>
</p:lastNameCell>
</t:grid>
这可以通过结合几件事来完成
- 一个DataTypeAnalyzer which produces a String datatype given a PropertyAdapter
- A DisplayBlockContribution 将数据类型映射到块(另请参阅 EditBlockContribution)。
- 将 DisplayBlockContribution 贡献给 BeanBlockSource
请注意,这不仅会影响网格,还会影响所有基于 bean 的组件(例如 BeanDisplay)。
快速启动示例here