2010-12-23 30 views
1

我有一個頁面: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的

,我有其還包含一個選擇和更新的區域的部件;組件選擇的內容取決於容器選擇表單值,所以我需要更新組件的內容。如果我的組件內沒有區域,它運行良好,但事實並非如此。

內部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 =>

@OnEvent(value = EventConstants.VALUE_CHANGED, component = "nameSelect") 
public Object valueChanged() { 
    return zoneComponentId.getBody(); 
} 

我趕選擇變化,以及i更新值。

我現在想要的是,當選擇從Test.tml更改時,也能夠更新SimpleTestComponent的內容。如果我在zone1中包含simpleTestComponent,我有一個錯誤,關於simpleTestComponent內的區域,當我觸發Test.java中的valueChanged事件時,我帶着zone1和組件區域(我在區域組件上放置了一個公共getter)時返回MultiZoneUpdate。 ,我也有一個錯誤,那麼解決方案是什麼......?

我不確定完全清楚,thx閱讀。 :)

+0

我使用tapestry 5.2.4 – Antoine 2010-12-23 16:22:44

回答

2

你需要讓你的嵌入式區(zoneComponent)適用於含有成分:

public class SimpleTestComponent 
{ 
    public Zone getZoneComponent() 
    { 
     return zoneComponentId; 
    } 
} 

,然後從你的事件處理程序在您的測試類返回區:

public class Test 
{ 
    @InjectComponent 
    private SimpleTestComponent simpleTestComponent; 

    @OnEvent(value = EventConstants.VALUE_CHANGED, component = "simpleSelect") 
    public Object changeOnSelect(String value) 
    { 
     return simpleTestComponent.getZoneComponent(); 
    } 
} 
+0

它幾乎奏效,zone的組件已經很好的刷新了,但id會自動生成並替換原來的id。我有一個錯誤:「無法找到區域元素'zoneComponent'更新元素'nameSelect_12d94ae9b75」的更改。 – Antoine 2011-01-17 15:55:19

相關問題