Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tapestry5网格组件网中的转换器功能_Java_Tapestry - Fatal编程技术网

Java Tapestry5网格组件网中的转换器功能

Java Tapestry5网格组件网中的转换器功能,java,tapestry,Java,Tapestry,今天我有一个关于Tapestry5网格中数字格式的问题。 我在组件中有两个字段需要格式化,因为一些规则涉及小数点和千位分隔符。对于文本字段,我使用为整个应用程序定义的translator(如示例中所示),但我不知道如何为网格获得相同的功能(或者即使可能)。我希望在整个应用程序中为所有网格提供相同的机制 当然,并不是所有的数字网格字段都是货币,所以应该有某种可能性来配置它们 我知道有了网格,我可以使用ValueEncoder,但我认为在这种情况下这不起作用,因为它编码网格中显示的整个对象,而不仅仅

今天我有一个关于Tapestry5网格中数字格式的问题。 我在组件中有两个字段需要格式化,因为一些规则涉及小数点和千位分隔符。对于文本字段,我使用为整个应用程序定义的translator(如示例中所示),但我不知道如何为网格获得相同的功能(或者即使可能)。我希望在整个应用程序中为所有网格提供相同的机制

当然,并不是所有的数字网格字段都是货币,所以应该有某种可能性来配置它们

我知道有了网格,我可以使用ValueEncoder,但我认为在这种情况下这不起作用,因为它编码网格中显示的整个对象,而不仅仅是一些定义的字段


还有一件事:我知道我可以定义每个字段以从方法中获取值,并且可以实现所有功能,但我正在寻找更灵活的方法—如前面提到的文本字段的“translator”。

您可以通过定义名为xCell的块属性(其中x是列名)来覆盖默认网格单元渲染行为。提供了一个自定义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>

${user.lastname}

通过定义名为xCell的块特性(其中x是列名),可以覆盖默认网格单元渲染行为。提供了一个自定义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>

${user.lastname}

这可以通过几件事的结合来实现

  • 在给定
  • 一种将数据类型映射到块的方法(另请参见EditBlockContribution)
  • 将DisplayBlockContribution贡献给BeanBlockSource
  • 请注意,这不仅会影响网格,还会影响所有基于bean的组件(例如BeanDisplay)


    Jumpstart示例

    这可以通过以下几项组合完成

  • 在给定
  • 一种将数据类型映射到块的方法(另请参见EditBlockContribution)
  • 将DisplayBlockContribution贡献给BeanBlockSource
  • 请注意,这不仅会影响网格,还会影响所有基于bean的组件(例如BeanDisplay)


    Jumpstart示例

    感谢您的回答,但该解决方案的问题是,我需要在每个网格中为列重复代码,并且我希望在一个地方编写,并且只在整个应用程序中传播。感谢您的回答,但该解决方案的问题是,我需要在每个网格中为列重复代码,我想在一个地方写,只在整个应用程序中传播。您可能可以使用DataTypeAnalyzer可以查找的字段上的注释来驱动数据类型。例如@DecimalFormat(“#,###0.00”)嗯,我不知道我是否理解正确:DataTypeAnalyzer应该寻找某种注释?好吧,同时我用另一种方式来做:我已经编写了自己的DataTypeAnalyzer(与AnnotationDataTypeAnalyzer非常类似),这也开始工作。不过也谢谢你的提示:)哦,太酷了。。。我不知道@DataType注释。如果在bean上使用这些注释,则不需要自定义DataTypeAnalyzer。只需使用@DataType(“4decimalplaces”)等,就可以了。我没有仔细阅读AnnotationDataTypeAnalyzer文档,您是对的,这就是我所需要的全部-谢谢:)您可能可以使用DataTypeAnalyzer可以查找的字段上的注释来驱动数据类型。例如@DecimalFormat(“#,###0.00”)嗯,我不知道我是否理解正确:DataTypeAnalyzer应该寻找某种注释?好吧,同时我用另一种方式来做:我已经编写了自己的DataTypeAnalyzer(与AnnotationDataTypeAnalyzer非常类似),这也开始工作。不过也谢谢你的提示:)哦,太酷了。。。我不知道@DataType注释。如果在bean上使用这些注释,则不需要自定义DataTypeAnalyzer。只需使用@DataType(“4decimalplaces”)等,就可以了。我没有仔细阅读AnnotationDataTypeAnalyzer文档,您是对的,这就是我所需要的一切-谢谢:)