Java 使用输入和/或链接装饰Tapestry网格,以设置每页的自定义行数

Java 使用输入和/或链接装饰Tapestry网格,以设置每页的自定义行数,java,pagination,grid,paging,tapestry,Java,Pagination,Grid,Paging,Tapestry,又是我:) 我试图用以下方式扩展Tapestry网格的以下行为 目前,我可以选择每页显示多少行,如下所示: <t:grid class="t-form-loop" t:source="myGridDataSource" t:model="myBeanModel" t:row="myEntry" t:encoder="myEncoder" t:rowsPerPage="20" t:pagerPosition="both" t:rowIn

又是我:)

我试图用以下方式扩展Tapestry网格的以下行为

目前,我可以选择每页显示多少行,如下所示:

<t:grid class="t-form-loop"
    t:source="myGridDataSource"
    t:model="myBeanModel"
    t:row="myEntry"
    t:encoder="myEncoder"
    t:rowsPerPage="20"
    t:pagerPosition="both"
    t:rowIndex="currentIndex"
    t:inplace="true">
t:rowsPerPage="myRowsPerPage"
但是,假设我有20-30页。在每一个网格上添加相同的代码将是无用和愚蠢的,因此我假设我想以某种方式装饰现有的网格。但是,我不想在全球范围内这样做,因为在某些页面上我想提供此功能,而在某些页面上我不想提供此功能

因此,鉴于我对Tapestry的了解有限,我假设我有两种选择:

  • 将向选定网格添加以下功能的Mixin
  • 以具有以下2个参数的方式扩展栅格组件:

    a
    t:rowsPerPageValues=“10,20,50100”

    b
    t:rowsPerPageInput=“true”

  • 另外,我想知道当前显示了多少行

    解决这个问题的最佳方法是什么?我可以得到一些帮助/提示来实现它们吗


    编辑:我希望它看起来像这样(sry表示糟糕的HTML):

    我认为您应该创建一个新组件,该组件具有嵌入式
    t:grid
    。你可能会发现这会有所帮助

    例如:

    ExtendedGrid.java

    public class ExtendedGrid {
       @Component(id="grid", publishParameters="source,inplace,etc,etc")
       private Grid grid;
    
       @Property
       private int rowsPerPage;
    }
    
    extendedGrid.tml

    <t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
       <t:form zone="gridZone">
          <t:select t:id="rowsPerPage" model="[10,20,50,100]" /> <t:submit />
       </t:form>
       <t:zone t:id="gridZone">
          <t:grid t:id="grid" rowsPerPage="prop:rowsPerPage" />
       </t:zone>
    </t:container>
    
    
    
    page.tml

    <t:extendedGrid source="mySource" inplace="true" />
    
    
    
    事实上,我已经尝试过mixin方法(遵循您的网格单元装饰器),除了一件事之外,我已经做了所有的事情。Grid没有“rowsPerPage”的setter:(您可以使用@BindParameter从mixin更新组件属性,但您会遇到问题,因为rowsPerPage默认为文本绑定。您无法从mixin更新绑定到
    文本:
    的值。更多详细信息:(顺便说一句,如果我已经有了一个带有我自己显示模型的网格,并且我在我的旧
    网格
    组件中像
    ..
    一样使用它,那么当我用
    扩展网格
    替换
    网格
    时,这些参数会发生什么变化?也许你可以做一个动态参数列表
    @component(id=“Grid”),publishParameters=“prop:myCalculatedParameterList”)
    否,这些是正式参数。
    t:rowsPerPageValues=“prop:[10,20,5010010001000000]”