GWTP不显示UI

时间:2015-08-09 11:55:48

标签: gwt gwtp gwt-platform

我正在尝试在GWT 2.7应用程序中使用GWTP,但我的uibinder中的UI未显示。我的应用程序编译并以超级开发模式运行,没有任何错误,但我得到一个空白屏幕。我希望LayoutView.ui.xml中的HTML能够在浏览器中显示。我确定我错过了一些非常基本的东西。任何帮助都会很棒。

以下内容包含在我的.gwt.xml文件中

  <inherits name='com.google.gwt.inject.Inject' />

  <!-- Other module inherits                                      -->
  <inherits name="com.google.gwt.uibinder.UiBinder" />
  <inherits name='com.gwtplatform.mvp.Mvp' />

  <entry-point class="com.clearwood.client.App" />

  <define-configuration-property name="gin.ginjector" is-multi-valued="false" />
  <set-configuration-property name="gin.ginjector"
   value="com.clearwood.client.gin.MyGinjector" /> 

的客户机/ App.java

public class App implements EntryPoint {
    public final MyGinjector ginjector = GWT.create(MyGinjector.class);

    @Override
    public void onModuleLoad() {
        DelayedBindRegistry.bind(ginjector);
        ginjector.getPlaceManager().revealCurrentPlace();      
    }
}

的客户机/杜松子酒/ ClientModule.java

public class ClientModule extends AbstractPresenterModule {
    @Override
    protected void configure() {
        install(new DefaultModule());
        install(new LayoutModule());

        bindConstant().annotatedWith(DefaultPlace.class).to(NameTokens.LAYOUT);
        bindConstant().annotatedWith(ErrorPlace.class).to(NameTokens.LAYOUT);
        bindConstant().annotatedWith(UnauthorizedPlace.class).to(NameTokens.LAYOUT);

        requestStaticInjection(NameTokens.class);
     }
}

的客户机/杜松子酒/ Ginjector.java

@GinModules({ ClientModule.class })
public interface MyGinjector extends Ginjector {
  EventBus getEventBus();   
  PlaceManager getPlaceManager();
  Provider<LayoutPresenter> getLayoutPresenter();
}

的客户机/地点/ NameTokens.java

public class NameTokens {
    public static final String LAYOUT = "LAYOUT";
    public static String getLAYOUT() {
        return LAYOUT;
    }
}

的客户机/布局/ LayoutView.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">
 <g:SimplePanel width="600px" height="auto" ui:field="main">
    <g:HTML width="100%" height="100%">TEST</g:HTML>
 </g:SimplePanel>
</ui:UiBinder>

的客户机/布局/ LayoutView.java

class LayoutView extends ViewImpl implements LayoutPresenter.MyView {
    interface Binder extends UiBinder<Widget, LayoutView> {
    }

    @UiField
    SimplePanel main;

    @Inject
    LayoutView(Binder uiBinder) {
        initWidget(uiBinder.createAndBindUi(this));
    }

    @Override
    public void setInSlot(Object slot, IsWidget content) {
        if (slot == LayoutPresenter.SLOT_Layout) {
            main.setWidget(content);
        } else {
            super.setInSlot(slot, content);
        }
    }
}

的客户机/布局/ LayoutPresenter.java

public class LayoutPresenter extends Presenter<LayoutPresenter.MyView, LayoutPresenter.MyProxy>  {
    interface MyView extends View  {
    }
    @ContentSlot
    public static final Type<RevealContentHandler<?>> SLOT_Layout = new Type<RevealContentHandler<?>>();

    @ProxyStandard
    interface MyProxy extends Proxy<LayoutPresenter> {
    }

    @Inject
    LayoutPresenter(
            EventBus eventBus,
            MyView view, 
            MyProxy proxy) {
        super(eventBus, view, proxy, RevealType.Root);
    }
}

的客户机/布局/ LayoutModule.java

public class LayoutModule extends AbstractPresenterModule {
    @Override
    protected void configure() {
        bindPresenter(LayoutPresenter.class, LayoutPresenter.MyView.class, LayoutView.class, LayoutPresenter.MyProxy.class);
    }
 }

我使用GWTP插件生成了Layout Presenter。 我试着按照示例教程进行操作 http://dev.arcbees.com/gwtp/sampletutorial/https://code.google.com/p/gwt-platform/wiki/GettingStarted#Getting_the_sample_applications 但其中一些似乎已被弃用

1 个答案:

答案 0 :(得分:1)

您没有带有ProxyPlace和注释@NameToken的演示者。为了使您的代码快速运行,您可以将LayoutPresenter.MyProxy更改为:

@ProxyStandard
@NameToken(NameTokens.LAYOUT)
interface MyProxy extends ProxyPlace<LayoutPresenter> {}

此外,Google Code文档实际上已经过时了。整个地方都有警告,所以我觉得这很明显。

https://dev.arcbees.com/gwtp/sampletutorial/上的文档最近足以帮助您开发一个有效的应用程序。您还可以查看GWTP的基本示例以获取更多示例:https://github.com/ArcBees/GWTP-Samples/tree/master/gwtp-samples/gwtp-sample-basic