在尝试使用Gwt UIBinder从主UI加载自定义窗口小部件时,我遇到异常
[ERROR] <g:north size='5'> must contain a widget, but found <app:HeaderPanel ui:field='headerPanel'> Element <g:DockLayoutPanel styleName='{style.outer}' unit='EM'> (:8)
在开发模式下解析XML时。下面是我为同一个
创建的XML<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui"
xmlns:app='urn.import:com.test.test.client'
xmlns:test='urn.import=com.test.test.client'>
<ui:style src="Resources/GlobalStyles.css" />
<g:DockLayoutPanel unit='EM' styleName='{style.outer}'>
<g:north size='5'>
<app:HeaderPanel ui:field='headerPanel' />
</g:north>
<g:west size='14'>
<test:FriendList ui:field='friendList' />
</g:west>
<g:center>
<g:HTMLPanel styleName='{style.boxPadding}'>
<div class="{style.titleBar}">Latest Activity</div>
<g:ScrollPanel ui:field='mainPanel' styleName='{style.mainPanel}' />
</g:HTMLPanel>
</g:center>
<g:south size="3">
<g:HTMLPanel styleName='{style.footerPanel}'>
<div>
<a href="#">Contact us</a>
|
<a href="#">Privacy</a>
|
<a href="#">About</a>
</div>
</g:HTMLPanel>
</g:south>
</g:DockLayoutPanel>
</ui:UiBinder>
headerPanel小部件在层次结构中退出。上面的UiBinder的相应代码如下所示
public class TestApp implements EntryPoint {
@UiField
HeaderPanel headerPanel;
@UiField
ScrollPanel mainPanel;
RootLayoutPanel root;
private static TestApp singleton;
public static TestApp get() {
return singleton;
}
interface TestAppUiBinder extends UiBinder<DockLayoutPanel, TestApp> {
}
private static TestAppUiBinder uiBinder = GWT
.create(TestAppUiBinder.class);
@Override
public void onModuleLoad() {
// TODO Auto-generated method stub
singleton = this;
DockLayoutPanel outer = uiBinder.createAndBindUi(this);
root = RootLayoutPanel.get();
root.add(outer);
}
}
基本上我是Gwt的新手,并试图学习这些东西。在这方面的任何指针都将是一个很大的帮助。
感谢。
答案 0 :(得分:1)
是什么
<app:HeaderPanel ui:field='headerPanel' />
?如果它没有扩展Widget那么它将无法工作。尝试将<g:Label>FOO</g:Label>
放在那里,看看它是否有效。还要确保您的xmlns正确无误。它将在com.test.test.client包中查找Header Panel。如果您正在尝试使用gwt Header Panel,那么它需要
<g:HeaderPanel ui:field="headerPanel" />
我认为你误解了xmlns
。这告诉gwt在哪里寻找你的java类。 app和test都指向同一个包。如果要包含自己的自定义窗口小部件类或CellTable
和DataGrid
等额外内容,则只应添加命名空间。我相信你想要使用标题。
答案 1 :(得分:0)
问题得到解决,因为它是xml解析问题。 感谢您提供意见。