java - MVP4G 主持人未设置

标签 java gwt mvp4g

我有一个问题,我使用 mvp4g 框架开发一个应用程序。我有一个带有选项卡的 View ,其中一个选项卡是第二个带有选项卡的 View 。当我尝试从第二个 View 调用演示者时,我得到 NPE(演示者为空)。 这是第一次查看的代码:

public interface ICategoriesView extends IsWidget {

    public interface ICategoriesPresenter {
    }
}

@Presenter(view = CategoriesView.class)
public final class CategoriesPresenter extends BasePresenter<ICategoriesView, UserEventBus> implements ICategoriesPresenter {
}

public final class CategoriesView extends ReverseCompositeView<ICategoriesPresenter> implements ICategoriesView {

    interface CategoriesViewUiBinder extends UiBinder<Widget, CategoriesView> {
    }

    private static final CategoriesViewUiBinder UI_BINDER = GWT.create(CategoriesViewUiBinder.class);

    public CategoriesView() {
        initWidget(UI_BINDER.createAndBindUi(this));
    }
}


<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
             xmlns:container="urn:import:com.sencha.gxt.widget.core.client.container"
             xmlns:gxtClient="urn:import:com.sencha.gxt.widget.core.client"
             xmlns:category="urn:import:app.client.ui.settings.categories">

    <ui:with type="app.client.Messages"             field="messages"/>
    <ui:with type="app.client.resource.image.Image" field="imageUser"/>

    <!-- Tab configuration. -->
    <ui:with type="com.sencha.gxt.widget.core.client.TabItemConfig" field="subjectTypes">
        <ui:attributes text="{messages.categories_tab_subjectTypes}" />
    </ui:with>
    <ui:with type="com.sencha.gxt.widget.core.client.TabItemConfig" field="subjectRegions">
        <ui:attributes text="{messages.categories_tab_subjectRegions}" />
    </ui:with>
    <ui:with type="com.sencha.gxt.widget.core.client.TabItemConfig" field="tripTypes">
        <ui:attributes text="{messages.categories_tab_tripTypes}" />
    </ui:with>
    <ui:with type="com.sencha.gxt.widget.core.client.TabItemConfig" field="expenseTypes">
        <ui:attributes text="{messages.categories_tab_expenseTypes}" />
    </ui:with>
    <ui:with type="com.sencha.gxt.widget.core.client.TabItemConfig" field="expensePaymentTypes">
        <ui:attributes text="{messages.categories_tab_expensePaymentTypes}" />
    </ui:with>

    <container:SimpleContainer>
        <gxtClient:TabPanel addStyleNames="margin-10">
            <gxtClient:child config="{subjectTypes}">
                <category:CategoryView category="ONE" />
            </gxtClient:child>

            <gxtClient:child config="{subjectRegions}">
                <category:CategoryView category="TWO" />
            </gxtClient:child>

            <gxtClient:child config="{tripTypes}">
                <category:CategoryView category="THREE" />
            </gxtClient:child>

            <gxtClient:child config="{expenseTypes}">
                <category:CategoryView category="FOUR" />
            </gxtClient:child>

            <gxtClient:child config="{expensePaymentTypes}">
                <category:CategoryView category="FIVE" />
            </gxtClient:child>
        </gxtClient:TabPanel>
    </container:SimpleContainer>

</ui:UiBinder>

这是第二个 View 的代码:

public interface ICategoryView extends IsWidget, Editor<CategoryDTO> {

    public interface ICategoryPresenter {

        public void getCategory(CategoryList category);
    }

    public void setCategory(String category);

    public void setGridContent(List<CategoryDTO> categoryDTOList);

    void showFailedMessage();
}


@Presenter(view = CategoryView.class)
public final class CategoryPresenter extends BasePresenter<ICategoryView, UserEventBus> implements ICategoryPresenter {

    @Inject
    private CategoryServiceAsync categoryServiceAsync;

    public void getCategory(CategoryList category) {
       ...
    }
}

public final class CategoryView extends ReverseCompositeView<ICategoryPresenter> implements ICategoryView {

    interface CategoryViewUiBinder extends UiBinder<Widget, CategoryView> {
    }

    interface CategoryDriver extends SimpleBeanEditorDriver<CategoryDTO, CategoryView> {
    }

    private static final CategoryViewUiBinder UI_BINDER = GWT.create(CategoryViewUiBinder.class);

    public CategoryView() {
        initWidget(UI_BINDER.createAndBindUi(this));
    }

    public void setCategory(String category) {
        List<CategoryDTO> categoryDTOList = Collections.emptyList();
        presenter.getCategory(CategoryList.valueOf(category));  // PRESENTER IS NULL!!!
    }

    public void setGridContent(List<CategoryDTO> categoryDTOList) {
    }

    @Override
    public void showFailedMessage() {
    }
}

最佳答案

您的演示者中没有任何 onGoTo 方法吗? 你能展示一下你的 Activity 巴士吗? 并尝试编译您的代码并将堆栈跟踪复制到此处。

关于java - MVP4G 主持人未设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10949236/

相关文章:

java - 如何在 Android 中发现我的应用程序的内存使用情况?

java - 如何在JSP中格式化时间

gwt - GWT 应用程序上的 Selenium 测试 - 请求未发送到服务器

gwt - 如何在 GWT 中禁用/启用 anchor ?

java - 使用 Java 正则表达式进行单词提取和拆分

java - Android BluetoothGattService - 异常无法编码

java - 在 STS 中以开发模式测试 GWT 应用程序

java - 连接到 Cloud SQL 时出错

apache - GWT 和 SSL 不工作?