我有一个带ajaxformloop的tml文件。在此循环中,我有一个自定义复选框和一个选择字段。根据所有选择字段和所有自定义复选框的值的组合,我想更改某些复选框的值。这是可行的,但是当我在整个ajaxformloop周围渲染区域时,我无法再添加或删除任何行。
我已经尝试仅在复选框周围使用一个区域,但是当我渲染该区域时,尽管我的代码中的复选框没有更改,但我的一些复选框仍会更改其值。
在此问题中描述了一个类似的问题: Tapestry AjaxFormLoop rows affecting each other's values, why? 不幸的是,到目前为止还没有答案。
我的tml文件看起来与此类似:
<t:zone t:id="Testzone" id="Testzone">
<div t:id="testLoop">
<div class="row">
<div class="col-sm-3">
<t:input t:id="testCheckbox"/>
</div>
<div class="col-sm-9">
<div class="input-group form-group test-loop-entry">
<t:select t:id="artField" t:zone="^" />
<t:textfield t:id="valueField" />
<span class="input-group-addon">
<div>
<t:removerowlink class="btn btn-danger"
title="Löschen">
</t:removerowlink>
</div>
</span>
</div>
</div>
</div>
<p:addRow>
<div class="col-sm-4 col-lg-2">
<t:addrowlink class="btn btn-default"
title="Hinzufügen">
</t:addrowlink>
</div>
</p:addRow>
</div>
然后在我的onChange方法中添加以下行:
ajaxResponseRenderer.addRender(testzone);
没有addRender-Line,我的addRowLink和deleteRowLink会按预期工作。但是使用addRender-Line不会触发我控制器中的事件。
在这篇文章的第一个答案中,它说,挂毯在更新一个正在忙于更新另一个组件的组件时遇到问题: Tapestry5 Ajaxformloop limit number of rows
我认为这可能是我的问题,但我不知道如何解决此问题。