我们可以创建一个继承PresenterWidget(界面MyView扩展View)(GWTP)的Child(界面MyView扩展PopupView)吗?

时间:2014-02-28 13:03:26

标签: gwtp

在GWTP中,有没有什么方法可以创建一个Child(具有“接口MyView扩展PopupView”)继承PresenterWidget(具有“MyView extends View”界面)?

这是我的问题。我需要提示(以PopupView的形式)用户输入送货地址,如果他们没有。

当然,有一个UserShippingAddressPresenter演示者窗口小部件不是弹出窗口&位于个人资料页面。

public class UserShippingAddressPresenter extends
    PresenterWidget<UserShippingAddressPresenter.MyView> {
    public interface MyView extends View {
    ////...... more code///

    }    
}

现在我希望有一个PopupUserShippingAddressPresenter正好拥有Gui&amp;像UserShippingAddressPresenter这样的功能,但它是像这样的Popup

public class UserShippingAddressPopupPresenter extends
    PresenterWidget<UserShippingAddressPresenter.MyView> {
    public interface MyView extends PopupView {
    ////...... more code///

    }    
}

所以这是我认为它有效的逻辑,但事实并非如此。那就是我将使用eclipse创建UserShippingAddressPopupPresenter interface MyView extends PopupView然后在UserShippingAddressPopupView我尝试setInSlot userShiopingAddress,如下所示

public class UserShippingAddressPopupView extends PopupViewImpl implements
    UserShippingAddressPopupPresenter.MyView {
    @Override
    public void setInSlot(Object slot, Widget content){

       if(slot==ProfilePresenter.SLOT_userShippingAddress){
          userShippingAddressHTMLPanel.clear();
          if(content!=null){
               userShippingAddressHTMLPanel.add(content);
          }
       }
       else{
           super.setInSlot(slot, content);
       }
    }

}
UserShippingAddressPopupPresenter

中的

public class UserShippingAddressPopupPresenter extends
    PresenterWidget<UserShippingAddressPopupPresenter.MyView> {

    public static final Object SLOT_userShippingAddress=new Object();
    public interface MyView extends PopupView {}


    @Inject UserShippingAddressPresenter userShippingAddressPresenter;

    @Override
    protected void onReveal() {
        super.onReveal();
        setInSlot( SLOT_userShippingAddress, userShippingAddressPresenter);
    }
}

跑完后,它在页面中间显示了一个非常小的框。

我尝试了onReset而不是onReveal,但它也没有用。 你能找到更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我的逻辑没问题,它正在发挥作用。我修好了,问题是“if(slot==ProfilePresenter.SLOT_userShippingAddress){”错了,正确的应该是“if(slot==PopupUserShippingAddressPresenter.SLOT_userShippingAddress){