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