(5.4-beta-6)如何更新循环内的区域?

时间:2014-08-08 22:28:52

标签: tapestry

我有一个显示多个组件的循环,包括区域。所有这些组件都在 Form 组件中。

此循环的每次迭代都会显示一个Select组件,当选择组件的值发生更改时显示区域(即 VALUE_CHANGED 触发事件并更新区域。

当此循环有多个迭代时,例如2,我有2个选择组件,但是第一次或第二次迭代的选择组件的值是否已更改,仅更新了一个区域,这在第一次迭代中显示。

如果我不清楚,请改写一下。假设您有一个显示选择区域组件的循环。每个循环显示我将调用的内容,页面部分。每个选择组件如何使用Ajax更新同一部分中的区域? (诀窍是知道区域的ID能够更新它)

1 个答案:

答案 0 :(得分:4)

试试这个

<t:loop source="objects" value="object">
  <t:select t:id="select" model="model" value="value" zone="${zoneId}"></t:select>
  <t:zone t:id="zone" id="${zoneId}"></t:zone>
</t:loop>


@InjectComponent
private Zone zone;

public String getZoneId() {
   return "zone_" + object.getId(); // unique identifier
}

public void onValueChangedFromSelect() {
   ajaxresponseRenderer.addRender(zone); // now the correct zone will be updated
}