如何正确渲染AjaxFormLoop?

时间:2019-04-01 11:39:45

标签: java tapestry

我有一个带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

我认为这可能是我的问题,但我不知道如何解决此问题。

0 个答案:

没有答案