Java Tapestry5 Ajaxformloop限制行数

Java Tapestry5 Ajaxformloop限制行数,java,tapestry,Java,Tapestry,我试图限制用户可以在ajaxformloop中添加的行数 简短示例: 例如,tapestry 5文档中的循环如下: 例如,如果我只希望用户能够输入3个电话号码,如何才能做到这一点 我尝试过的: 1) 我尝试从OnAddressRow事件返回null,这会导致异常和异常报告页面显示-我认为这些事件不应该返回null 2) 我尝试添加自己的“添加行”按钮,如下所示: <p:addRow> <t:addrowlink>Add another</t:addrowli

我试图限制用户可以在ajaxformloop中添加的行数

简短示例:

例如,tapestry 5文档中的循环如下:

例如,如果我只希望用户能够输入3个电话号码,如何才能做到这一点

我尝试过的:

1) 我尝试从OnAddressRow事件返回null,这会导致异常和异常报告页面显示-我认为这些事件不应该返回null

2) 我尝试添加自己的“添加行”按钮,如下所示:

<p:addRow>
    <t:addrowlink>Add another</t:addrowlink>
</p:addRow>
<t:if test="canAddMorePhones()">    
    <p:addRow>
        <t:addrowlink>Add another</t:addrowlink>
    </p:addRow>
</t:if>

再加一个
然后在它周围放一个t:if,像这样:

<p:addRow>
    <t:addrowlink>Add another</t:addrowlink>
</p:addRow>
<t:if test="canAddMorePhones()">    
    <p:addRow>
        <t:addrowlink>Add another</t:addrowlink>
    </p:addRow>
</t:if>

再加一个
在这种情况下,“添加另一个”将恢复为默认的“添加行”按钮,并且不会显示我的添加行链接

3) 我试着移动t:如果在内部,这有类似的结果

------------------------------------

我相信这是一个相当普遍的目标,有什么简单的方法可以做到吗?也许有人可以提供一个例子,如果可能的话,这可以帮助进入文档,因为我相信我不会是唯一一个尝试这样做的人

注意:我也在T5用户邮件列表上询问过,得到了一个答案,但在收到Lance的回复后,我似乎无法让它正常工作(我确信这可能是正确的,但我不确定如何使用AjaxResponseRenderer。根据我上周的回复,这可能是由于我自己的技术限制或对T5某些部分的理解)。


我也试着像在邮件列表代码中那样使用
ajaxResponseRenderer.addRender
,但似乎不起作用。然而,
ajaxResponseRenderer
也支持JavaScript的执行。在文档中的
AjaxFormLoop
示例中采用这种方法,指定
addrowlink
详情如下:

<p:addrow>
    <t:if test="canAddMorePhones()">
        <t:addrowlink id="addRowLink" t:id="addRowLink">Add another</t:addrowlink>
    </t:if>
</p:addrow>

该示例已在Tapestry 5.3.7中成功测试。

我开始认为类似的方法也可能是答案。我发现一个问题,我们只是将其隐藏在前端,它不会阻止有人取消隐藏按钮-但是,如果有人取消隐藏按钮,我可以确保OnAddressRow方法从服务器端引发异常tton。另外,对于我的特定用例,我希望我的婚礼嘉宾没有恶意!我认为这是目前的答案。也许这是可以在T5项目的某个阶段更新的东西,如果它有意义的话。非常感谢Heeneee的帮助。我们可能也可以从addrowlink周围删除t:if。几点注意事项对于稍后在此的任何人-这也需要在渲染后完成,而不仅仅是在添加新行中,否则如果我们刷新页面,我们将返回“添加行”按钮。addscript现在也不推荐使用,但对于我的用例,我不介意。删除行链接也需要考虑一些因素。保留
t:if
会处理page.令人耳目一新的情况。