2015-08-09 5 views
0

Я пытаюсь использовать GWTP в своем приложении GWT 2.7, но пользовательский интерфейс в моем iibinder не отображается. Мое приложение компилируется и работает в режиме Super dev без каких-либо ошибок, но я получаю пустой экран. Я ожидал, что HTML в LayoutView.ui.xml будет отображаться в браузере. Я уверен, что мне не хватает чего-то действительно элементарного. Любая помощь будет большой.GWTP не отображается UI

входит в мой .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); 
    } 
} 

клиент/gin/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); 
     } 
    } 
} 

клиент/компоновка/макетPresenter.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); 
    } 
} 

Я сгенерировал Layout выступающему, используя плагин GWTP. Я пытался следовать выборочным учебникам по http://dev.arcbees.com/gwtp/sampletutorial/ и https://code.google.com/p/gwt-platform/wiki/GettingStarted#Getting_the_sample_applications , но некоторые из них, кажется устаревшим

ответ

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

+0

Спасибо, Кристофер. Теперь работает :) – user3359702

Смежные вопросы