在Tapestry 4中,我尝试迭代列表列表(从技术上讲,列表中包含字符串列表作为数据字段)。 我目前正在使用'嵌套'作为组件。
(这是伪代码)
<span jwcid="Form">
<span jwcid="@For" source="ognl:Javaclass.TopLevelList" value="ognl:SecondLevelList" index="ognl:index">
<span jwcid="@For" source="ognl:SecondLevelList.List" value="ognl:ListItem" index="ListItemIndex">
<span jwcid="@TextField" value="ognl:ListItem"/>
<span jwcid="@Submit" listener="ognl:listeners.onSubmit"/>
</span></span></span>
onSubmit侦听器然后访问index和ListItem索引页面属性,以及ListItem页面属性,以便正确更新Javaclass.TopLevelList中的列表。
这很好用,但看起来很糟糕,对最终用户来说很麻烦。 我宁愿以某种方式使用页面底部的一个提交按钮来模拟此功能。
我已经以某种方式使用覆盖的表单组件来获取其中的“表单控件组件”列表,然后(非常小心地)通过tapestry的命名约定解析以恢复索引的功能。
如果有人知道如何做到这一点,或者可以解释表单组件(如何/何时提交,等等),我们将不胜感激。