我有一个简单的gxt窗口:
public class MainWindow extends Window {
public MainWindow() {
Label test = new Label("Test");
add(test);
}
}
我想从UiBinder描述同一个窗口。这段代码完美无缺:
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:gxt="urn:import:com.extjs.gxt.ui.client.widget">
<gxt:Window>
</gxt:Window>
</ui:UiBinder>
但是当我在gxt:Window元素中添加<gxt:Label>Test</gxt:Label>
时,我有错误:
[ERROR] Found unexpected child element Element <gxt:Label>
我做错了什么?在Window元素中有什么期望?
答案 0 :(得分:1)
Ext GWT 2.x不支持UiBinder(原因是缺少在GWT中创建自定义元素解析器的公共API:http://code.google.com/p/google-web-toolkit/issues/detail?id=4461)。
你可以添加一个组件gxt:Windows
,但就是这样,你不能在gxt:Window
下添加子元素,因为没有任何gxt:Window超类的元素解析器。 GWT的小组扩展了GWT的HasWidgets
,并且有一个元素解析器:HasWidgetsParser,它为每个子元素调用add()
。
有可能解决这个问题,我猜这是他们为Ext GWT 3 beta所做的事情,因为它声称“完全支持UiBinder”,所以你可以试试。