我有一个页面:Test.tml,其中包含一个选择和一个组件:
<t:zone t:id="zone1" t:clientId="zone1">
<form t:id="form" id="form" method="post">
<p>
<select t:type="select" t:id="simpleSelect" t:clientId="simpleSelect" t:value="simpleSelect" t:model="selectList" t:zone="zone1" />
</p>
</form>
<div t:type="SimpleTestComponent" t:id="simpleTestComponent" ></div>
</t:zone>
在Test.java中,我抓住了这个事件:
@OnEvent(value = EventConstants.VALUE_CHANGED, component = "simpleSelect")
public Object changeOnSelect(String value) {
return zone1.getBody();
}
哪个更新了zone1
我有一个组件,它还包含一个select和一个要更新的区域;组件选择的内容取决于容器选择表单值,因此我还需要更新组件的内容。如果我的组件中没有区域,那么它运行良好,但情况并非如此。
在SimpleTestComponent.tml中,我有:
<form t:id="form" id="form" method="post">
<p>
<select t:type="select" t:id="nameSelect" t:clientId="nameSelect" t:value="nameSelected" t:model="nameList" t:zone="zoneComponent"/>
</p>
</form>
<t:zone t:id="zoneComponent" t:clientId="zoneComponent">
<p>${nameSelected}</p></t:zone>
并在SimpleTestComponent.java =&gt;
@OnEvent(value = EventConstants.VALUE_CHANGED, component = "nameSelect")
public Object valueChanged() {
return zoneComponentId.getBody();
}
我抓住了选择更改,并更新了值。
我现在想要的是,当从Test.tml更改select时,还能够更新SimpleTestComponent的内容。如果我在zone1中包含simpleTestComponent,我有一个错误,关于simpleTestComponent内的区域,当我在Test.java中触发valueChanged事件时,我返回一个MultiZoneUpdate,带有zone1和组件区域(我在区域组件上放置一个公共getter) ,我也有错误,所以解决方案是什么......?
我不确定是非常清楚,因为阅读。 :)
答案 0 :(得分:2)
您需要使嵌入区域(zoneComponent)可用于包含组件:
public class SimpleTestComponent
{
public Zone getZoneComponent()
{
return zoneComponentId;
}
}
然后从Test类中的事件处理程序返回该区域:
public class Test
{
@InjectComponent
private SimpleTestComponent simpleTestComponent;
@OnEvent(value = EventConstants.VALUE_CHANGED, component = "simpleSelect")
public Object changeOnSelect(String value)
{
return simpleTestComponent.getZoneComponent();
}
}