如何创建包装主要内容并提供默认设计的小部件?

时间:2016-05-27 17:01:12

标签: gwt uibinder

我想创建一个包装器小部件,它提供某种"默认"不同页面的布局。我希望能够做到这样的事情:

<!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:m="urn:import:gwt.material.design.client.ui"
    xmlns:m.addins="urn:import:gwt.material.design.addins.client.ui"
    xmlns:mz="urn:import:com.mz.client.admin.widget"
    >

    <ui:style>
    </ui:style>

    <mz:defaultpagelayout.DefaultPageLayout>        
        <m:MaterialTitle title="Basic Information"/>
        <m:MaterialTextBox text="Forename"/>
        <m:MaterialTextBox text="Surname"/>        
    </mz:defaultpagelayout.DefaultPageLayout>

</ui:UiBinder>

其中DefaultPageLayout只是一个为实际内容提供特定外观的容器。我试过这样做:

DefaultPageLayout.ui.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:m="urn:import:gwt.material.design.client.ui"
    xmlns:m.addins="urn:import:gwt.material.design.addins.client.ui">

    <ui:style>
    .main-content {
        padding: 20px;
    }   
    </ui:style>

    <g:HTMLPanel addStyleNames="{style.main-content}">
    </g:HTMLPanel>
</ui:UiBinder> 

DefaultPageLayout.java:

public class DefaultPageLayout extends Composite {

    private static DefaultPageLayoutUiBinder uiBinder = GWT.create(DefaultPageLayoutUiBinder.class);

    interface DefaultPageLayoutUiBinder extends UiBinder<Widget, DefaultPageLayout> {
    }

    public DefaultPageLayout() {
        this.initWidget(uiBinder.createAndBindUi(this));
    }
}

但实际上这不起作用:

[ERROR] Found unexpected child element: <m:MaterialTitle title='Basic Information'> (:13)

我需要做些什么才能让这个小部件在我这里工作?

1 个答案:

答案 0 :(得分:0)

您的DefaultPageLayout需要实施HasWidget(理想情况下HasWidgets.ForIsWidget