我发现Tapestry Grid组件存在奇怪的问题(但很可能是它的预期)。经过更长时间的解释后,问题将会到底。 p>
当在循环内使用Grid时,分页会停止向分页链接添加唯一的网格ID。显示该行为的简单示例
<t:numbersgrid max="literal:6"/>
<t:numbersgrid max="literal:6"/>
<t:loop source="numbers" value="number" index="index">
<t:numbersgrid max="index"/>
</t:loop>
前两个numbergrid组件,获取正确的id。分页链接遵循.../T5sample/about.numbersgrid.grid.pager/2
和.../about.numbersgrid_0.grid.pager/2
,这使得Grid的行为正确。
内部循环中的所有网格都会获得.../about.numbersgrid_1.grid.pager/2
之类的链接,这些链接不起作用:/
简化代码(读取:行号网格)
<t:loop source="numbers" value="number" index="index">
<t:grid source="numbers" row="gridNumber" pagerPosition="bottom" rowsPerPage="2" t:add="number">
<p:numberCell>
${number}
</p:numberCell>
</t:grid>
也没有帮助。效果非常有趣,但这只是另一个话题的好主题。
我不明白的事情,这就是为什么它不起作用。它应该是可能的,但我甚至不知道从哪里开始搜索。
问题:有什么方法可以让它发挥作用。甚至可以为T5制作一个补丁(本地更改,甚至不在主回购中),这会使其成为可能的工作吗?
感谢您提供任何线索。
答案 0 :(得分:2)
您可能已经意识到,将一个组件放在一个循环中意味着该组件的一个实例被多次渲染。这是挂毯的principles静态结构,动态行为&#34 ;.
您偶然发现了网格组件的限制。它确实应该接受一个上下文参数并将值传递给服务器端事件(排序,分页)以支持这样的用例。
您可以观看TAP5-2297来跟踪进度。或者更好的是,提交一个包含适当测试用例的补丁。