(5.4-beta-6)如何在循环中更新Zone



我有一个循环,其中显示了许多组件,包括Zone。所有这些组件都在Form组件中。

此循环的每次迭代都显示一个Select组件,当Select组件的值发生变化时(即触发VALUE_CHANGED事件并更新该区域),该组件显示Zone

当这个循环有多个迭代时,例如2,我有2个Select组件,但无论是第一次还是第二次迭代的Select组件的值被改变,只有一个Zone被更新,这在第一次迭代中显示。

如果我没说清楚的话,让我换个说法。假设您有一个显示SelectZone组件的循环。每个循环显示我称之为页面部分的内容。每个Select组件如何使用Ajax更新同一节中的Zone ?(诀窍在于知道区域的ID以便能够更新它)

试试这个

<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
}

最新更新