如何在Tapestry 5组件中获取父机箱的客户端ID?

时间:2012-04-09 07:51:17

标签: java components tapestry

我正在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。

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

1 个答案:

答案 0 :(得分:2)

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

@InjectContainer
private ClientElement container;

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