首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Popup Presenter参数的PlaceRequest

带有Popup Presenter参数的PlaceRequest
EN

Stack Overflow用户
提问于 2011-09-22 11:11:17
回答 1查看 1.8K关注 0票数 1

我尝试将placerequest中的参数传递给将弹出的演示者,但在弹出演示者中收到空参数。我是不是忘了什么?

AddProjetoPresenter

代码语言:javascript
复制
public class AddProjetoPresenter extends Presenter<AddProjetoPresenter.AddProjetoView, AddProjetoPresenter.AddProjetoProxy>
    {
    @ProxyCodeSplit
    @NameToken(NameTokens.addproj)
    public interface AddProjetoProxy extends ProxyPlace<AddProjetoPresenter>
    {
    }

    public interface AddProjetoView extends View
    {
        HasValue<String> getNome();

        HasValue<Date> getDtInicio();

        HasValue<Date> getDtFim();

        HasClickHandlers getAddRequisitos();

        HasClickHandlers getAddStakeholders();

        HasClickHandlers getBtCancelar();

        HasClickHandlers getBtSalvar();
    }

    private final DispatchAsync dispatch;
    private final PlaceManager placeManager;
    private Projeto projeto;

    @Inject
    public AddProjetoPresenter(final EventBus eventBus, final AddProjetoView view, final AddProjetoProxy proxy, final DispatchAsync dispatch,
            final PlaceManager placeManager)
    {
        super(eventBus, view, proxy);
        this.dispatch = dispatch;
        this.placeManager = placeManager;
    }

    @Override
    protected void revealInParent()
    {
        RevealContentEvent.fire(this, MainPresenter.TYPE_SetMainContent, this);
    }

    @Override
    protected void onBind()
    {
        super.onBind();

        getView().getBtSalvar().addClickHandler(new ClickHandler()
        {
            @Override
            public void onClick(ClickEvent event)
            {

            }
        });

        getView().getAddRequisitos().addClickHandler(new ClickHandler()
        {
            @Override
            public void onClick(ClickEvent event)
            {
                PlaceRequest pr = new PlaceRequest(NameTokens.addreq);
                pr.with("oi", "oiiiii"); // HERE
                placeManager.revealPlace(pr, false);
            }
        });
    }

}

AddRequisitoPresenter

代码语言:javascript
复制
public class AddRequisitoPresenter extends Presenter<AddRequisitoPresenter.AddRequisitoView, AddRequisitoPresenter.AddRequisitoProxy>
{

    @ProxyCodeSplit
    @NameToken(NameTokens.addreq)
    public interface AddRequisitoProxy extends ProxyPlace<AddRequisitoPresenter>
    {

    }

    public interface AddRequisitoView extends PopupView
    {
        DialogBox getDialog();
    }

    private final DispatchAsync dispatcher;
    private Projeto projeto;

    @Inject
    public AddRequisitoPresenter(final EventBus eventBus, final AddRequisitoView view, final AddRequisitoProxy proxy, final DispatchAsync dispatcher)
    {
        super(eventBus, view, proxy);
        this.dispatcher = dispatcher;
    }

    @Override
    public void prepareFromRequest(PlaceRequest request)
    {
        super.prepareFromRequest(request);
        getView().getDialog().setText(request.getParameterNames().size() + ""); //SIZE IS ZERO!!
    }

    @Override
    protected void onBind()
    {
        super.onBind();
    }

    @Override
    protected void revealInParent()
    {
        RevealRootPopupContentEvent.fire(this, this);
    }
}

我觉得我做错了什么..。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-22 15:32:07

根据我在wiki中的理解,弹出窗口不能是一个地方,它需要一个父演示者。

我在这里看到了两个明显的问题:

  • 您的第二个presenter ( popup)应该实现PresenterWidget,而不是Presenter
  • 您不能通过调用placeManager.revealPlace()来显示popup,因为popup不是一个地方。相反,您必须应用wiki (addToPopupSlot()或RevealRootPopupContentEvent.fire()中说明的两种方法之一,这两种方法都是从父级调用的)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7509141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档