我正在Taperstry 5下开发一个ExtJS组件模型。我尝试实现以下API(.tml代码):

<t:extjs.viewport t:id="ddd" layout="border" width="500">
    <t:extjs.panel t:id="contentBody" title="Content Body" />
</t:extjs.viewport>


在客户端,我希望收到以下信息:

Tapestry.onDOMLoaded(function() {
var ddd = Ext.create('Ext.container.Viewport', {
  "id" : "ddd",
  "layout" : "border",
  "width" : 500
});
var contentBody = Ext.create('Ext.panel.Panel', {
  "id" : "contentBody",
  "title" : "Content Body"
});
ddd.add(contentBody);
});


为了编写ddd.add(contentBody);,子组件contentBody应该知道封闭的ddd组件的clientId。

我怎么才能得到它?请指教。

最佳答案

您应该能够使用@InjectContainer注入组件的直接容器并获取其客户端ID:

@InjectContainer
private ClientElement container;

@AfterRender
void addScript() {
    String containerClientId = container.getClientId();
    //pass client ID to JavaScript
}

10-07 19:43