GWT&x27;s编辑器框架与GWTP

GWT&x27;s编辑器框架与GWTP,gwt,gwt-platform,Gwt,Gwt Platform,在此基础上,我尝试将GWT编辑器集成到弹出式presenter小部件中。正确的方法是什么 我的观点是这样的: public class DeviceEditorDialogView extends PopupViewWithUiHandlers<DeviceEditorDialogUiHandlers> implements DeviceEditorDialogPresenterWidget.MyView { interface Binder

在此基础上,我尝试将GWT编辑器集成到弹出式presenter小部件中。正确的方法是什么

我的观点是这样的:

public class DeviceEditorDialogView extends
        PopupViewWithUiHandlers<DeviceEditorDialogUiHandlers> implements
        DeviceEditorDialogPresenterWidget.MyView {
    interface Binder extends UiBinder<PopupPanel, DeviceEditorDialogView> {
    }
    public interface Driver extends SimpleBeanEditorDriver<DeviceDto, DeviceEditorDialogView> {
    }

    @Inject
    DeviceEditorDialogView(Binder uiBinder, EventBus eventBus) {
        super(eventBus);

        initWidget(uiBinder.createAndBindUi(this));
    }


    @Override
    public SimpleBeanEditorDriver<DeviceDto, ?> createEditorDriver() {
        Driver driver = GWT.create(Driver.class);
        driver.initialize(this);
        return driver;
    }

}
public class DeviceEditorDialogPresenterWidget extends PresenterWidget<DeviceEditorDialogPresenterWidget.MyView> implements
            DeviceEditorDialogUiHandlers {

    @Inject
    DeviceEditorDialogPresenterWidget(EventBus eventBus,
                               MyView view) {
        super(eventBus, view);
        getView().setUiHandlers(this);
    }
    /**
     * {@link LocalDialogPresenterWidget}'s PopupView.
     */
    public interface MyView extends PopupView, DevicesEditView<DeviceDto>, HasUiHandlers<DeviceEditorDialogUiHandlers> {

    }

    private DeviceDto currentDeviceDTO = null;

    private SimpleBeanEditorDriver<DeviceDto, ?> driver;

    public DeviceDto getCurrentDeviceDTO() {
        return currentDeviceDTO;
    }

    public void setCurrentDeviceDTO(DeviceDto currentDeviceDTO) {
        this.currentDeviceDTO = currentDeviceDTO;
    }

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

        driver = getView().createEditorDriver();
    }
    //UiHandler Method: Person person = driver.flush();

}
@Override
public void showDeviceDialog() {
    deviceEditorDialog.setCurrentDeviceDTO(new DeviceDto());
    addToPopupSlot(deviceEditorDialog);

}
@Override
public void onReveal() {
    super.onReveal();

    driver.edit(currentDeviceDTO); // this will populate your view with the data from your POJO
}
showDeviceDialog位于父演示器中,当单击该父演示器中的按钮时调用,该按钮实例化带有专用最终设备EditorDialogPresenterWidget deviceEditorDialog的对话框


谢谢

以上代码中缺少几个关键点:

  • 您的
    设备editordialgview
    应该实现
    编辑器
    。这是必需的,以便使用来自POJO的数据填充
    DeviceEditorDialogView
    的字段
  • 您的
    deviceeditordialgview
    应该具有映射到POJO中字段的子编辑器。例如,给定字段
    deviceDto.modelName
    (键入
    String
    ),您可以在
    DeviceEditorDialogView
    中有一个名为
    modelName
    的GWT
    标签。此
    标签
    实现
    编辑器
    ,当您调用
    driver.edit(DeviceTo)
  • 您应该在
    deviceeditordialgview
    的构造函数中只调用
    driver.initialize(this)
您应该像这样覆盖
onReveal()

public class DeviceEditorDialogView extends
        PopupViewWithUiHandlers<DeviceEditorDialogUiHandlers> implements
        DeviceEditorDialogPresenterWidget.MyView {
    interface Binder extends UiBinder<PopupPanel, DeviceEditorDialogView> {
    }
    public interface Driver extends SimpleBeanEditorDriver<DeviceDto, DeviceEditorDialogView> {
    }

    @Inject
    DeviceEditorDialogView(Binder uiBinder, EventBus eventBus) {
        super(eventBus);

        initWidget(uiBinder.createAndBindUi(this));
    }


    @Override
    public SimpleBeanEditorDriver<DeviceDto, ?> createEditorDriver() {
        Driver driver = GWT.create(Driver.class);
        driver.initialize(this);
        return driver;
    }

}
public class DeviceEditorDialogPresenterWidget extends PresenterWidget<DeviceEditorDialogPresenterWidget.MyView> implements
            DeviceEditorDialogUiHandlers {

    @Inject
    DeviceEditorDialogPresenterWidget(EventBus eventBus,
                               MyView view) {
        super(eventBus, view);
        getView().setUiHandlers(this);
    }
    /**
     * {@link LocalDialogPresenterWidget}'s PopupView.
     */
    public interface MyView extends PopupView, DevicesEditView<DeviceDto>, HasUiHandlers<DeviceEditorDialogUiHandlers> {

    }

    private DeviceDto currentDeviceDTO = null;

    private SimpleBeanEditorDriver<DeviceDto, ?> driver;

    public DeviceDto getCurrentDeviceDTO() {
        return currentDeviceDTO;
    }

    public void setCurrentDeviceDTO(DeviceDto currentDeviceDTO) {
        this.currentDeviceDTO = currentDeviceDTO;
    }

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

        driver = getView().createEditorDriver();
    }
    //UiHandler Method: Person person = driver.flush();

}
@Override
public void showDeviceDialog() {
    deviceEditorDialog.setCurrentDeviceDTO(new DeviceDto());
    addToPopupSlot(deviceEditorDialog);

}
@Override
public void onReveal() {
    super.onReveal();

    driver.edit(currentDeviceDTO); // this will populate your view with the data from your POJO
}

当弹出窗口显示时,在您的
DeviceEditorDialogPresenterWidget
被添加到
addToPopupSlot

之后,将调用此方法。以下是上面代码中缺少的几个关键点:

  • 您的
    设备editordialgview
    应该实现
    编辑器
    。这是必需的,以便使用来自POJO的数据填充
    DeviceEditorDialogView
    的字段
  • 您的
    deviceeditordialgview
    应该具有映射到POJO中字段的子编辑器。例如,给定字段
    deviceDto.modelName
    (键入
    String
    ),您可以在
    DeviceEditorDialogView
    中有一个名为
    modelName
    的GWT
    标签。此
    标签
    实现
    编辑器
    ,当您调用
    driver.edit(DeviceTo)
  • 您应该在
    deviceeditordialgview
    的构造函数中只调用
    driver.initialize(this)
您应该像这样覆盖
onReveal()

public class DeviceEditorDialogView extends
        PopupViewWithUiHandlers<DeviceEditorDialogUiHandlers> implements
        DeviceEditorDialogPresenterWidget.MyView {
    interface Binder extends UiBinder<PopupPanel, DeviceEditorDialogView> {
    }
    public interface Driver extends SimpleBeanEditorDriver<DeviceDto, DeviceEditorDialogView> {
    }

    @Inject
    DeviceEditorDialogView(Binder uiBinder, EventBus eventBus) {
        super(eventBus);

        initWidget(uiBinder.createAndBindUi(this));
    }


    @Override
    public SimpleBeanEditorDriver<DeviceDto, ?> createEditorDriver() {
        Driver driver = GWT.create(Driver.class);
        driver.initialize(this);
        return driver;
    }

}
public class DeviceEditorDialogPresenterWidget extends PresenterWidget<DeviceEditorDialogPresenterWidget.MyView> implements
            DeviceEditorDialogUiHandlers {

    @Inject
    DeviceEditorDialogPresenterWidget(EventBus eventBus,
                               MyView view) {
        super(eventBus, view);
        getView().setUiHandlers(this);
    }
    /**
     * {@link LocalDialogPresenterWidget}'s PopupView.
     */
    public interface MyView extends PopupView, DevicesEditView<DeviceDto>, HasUiHandlers<DeviceEditorDialogUiHandlers> {

    }

    private DeviceDto currentDeviceDTO = null;

    private SimpleBeanEditorDriver<DeviceDto, ?> driver;

    public DeviceDto getCurrentDeviceDTO() {
        return currentDeviceDTO;
    }

    public void setCurrentDeviceDTO(DeviceDto currentDeviceDTO) {
        this.currentDeviceDTO = currentDeviceDTO;
    }

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

        driver = getView().createEditorDriver();
    }
    //UiHandler Method: Person person = driver.flush();

}
@Override
public void showDeviceDialog() {
    deviceEditorDialog.setCurrentDeviceDTO(new DeviceDto());
    addToPopupSlot(deviceEditorDialog);

}
@Override
public void onReveal() {
    super.onReveal();

    driver.edit(currentDeviceDTO); // this will populate your view with the data from your POJO
}

当弹出窗口显示时,在您的
DeviceEditorDialogPresenterWidget
被添加到
addToPopupSlot

之后,将调用此方法。以下是上面代码中缺少的几个关键点:

  • 您的
    设备editordialgview
    应该实现
    编辑器
    。这是必需的,以便使用来自POJO的数据填充
    DeviceEditorDialogView
    的字段
  • 您的
    deviceeditordialgview
    应该具有映射到POJO中字段的子编辑器。例如,给定字段
    deviceDto.modelName
    (键入
    String
    ),您可以在
    DeviceEditorDialogView
    中有一个名为
    modelName
    的GWT
    标签。此
    标签
    实现
    编辑器
    ,当您调用
    driver.edit(DeviceTo)
  • 您应该在
    deviceeditordialgview
    的构造函数中只调用
    driver.initialize(this)
您应该像这样覆盖
onReveal()

public class DeviceEditorDialogView extends
        PopupViewWithUiHandlers<DeviceEditorDialogUiHandlers> implements
        DeviceEditorDialogPresenterWidget.MyView {
    interface Binder extends UiBinder<PopupPanel, DeviceEditorDialogView> {
    }
    public interface Driver extends SimpleBeanEditorDriver<DeviceDto, DeviceEditorDialogView> {
    }

    @Inject
    DeviceEditorDialogView(Binder uiBinder, EventBus eventBus) {
        super(eventBus);

        initWidget(uiBinder.createAndBindUi(this));
    }


    @Override
    public SimpleBeanEditorDriver<DeviceDto, ?> createEditorDriver() {
        Driver driver = GWT.create(Driver.class);
        driver.initialize(this);
        return driver;
    }

}
public class DeviceEditorDialogPresenterWidget extends PresenterWidget<DeviceEditorDialogPresenterWidget.MyView> implements
            DeviceEditorDialogUiHandlers {

    @Inject
    DeviceEditorDialogPresenterWidget(EventBus eventBus,
                               MyView view) {
        super(eventBus, view);
        getView().setUiHandlers(this);
    }
    /**
     * {@link LocalDialogPresenterWidget}'s PopupView.
     */
    public interface MyView extends PopupView, DevicesEditView<DeviceDto>, HasUiHandlers<DeviceEditorDialogUiHandlers> {

    }

    private DeviceDto currentDeviceDTO = null;

    private SimpleBeanEditorDriver<DeviceDto, ?> driver;

    public DeviceDto getCurrentDeviceDTO() {
        return currentDeviceDTO;
    }

    public void setCurrentDeviceDTO(DeviceDto currentDeviceDTO) {
        this.currentDeviceDTO = currentDeviceDTO;
    }

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

        driver = getView().createEditorDriver();
    }
    //UiHandler Method: Person person = driver.flush();

}
@Override
public void showDeviceDialog() {
    deviceEditorDialog.setCurrentDeviceDTO(new DeviceDto());
    addToPopupSlot(deviceEditorDialog);

}
@Override
public void onReveal() {
    super.onReveal();

    driver.edit(currentDeviceDTO); // this will populate your view with the data from your POJO
}

当弹出窗口显示时,在您的
DeviceEditorDialogPresenterWidget
被添加到
addToPopupSlot

之后,将调用此方法。以下是上面代码中缺少的几个关键点:

  • 您的
    设备editordialgview
    应该实现
    编辑器
    。这是必需的,以便使用来自POJO的数据填充
    DeviceEditorDialogView
    的字段
  • 您的
    deviceeditordialgview
    应该具有映射到POJO中字段的子编辑器。例如,给定字段
    deviceDto.modelName
    (键入
    String
    ),您可以在
    DeviceEditorDialogView
    中有一个名为
    modelName
    的GWT
    标签。此
    标签
    实现
    编辑器
    ,当您调用
    driver.edit(DeviceTo)
  • 您应该在
    deviceeditordialgview
    的构造函数中只调用
    driver.initialize(this)
您应该像这样覆盖
onReveal()

public class DeviceEditorDialogView extends
        PopupViewWithUiHandlers<DeviceEditorDialogUiHandlers> implements
        DeviceEditorDialogPresenterWidget.MyView {
    interface Binder extends UiBinder<PopupPanel, DeviceEditorDialogView> {
    }
    public interface Driver extends SimpleBeanEditorDriver<DeviceDto, DeviceEditorDialogView> {
    }

    @Inject
    DeviceEditorDialogView(Binder uiBinder, EventBus eventBus) {
        super(eventBus);

        initWidget(uiBinder.createAndBindUi(this));
    }


    @Override
    public SimpleBeanEditorDriver<DeviceDto, ?> createEditorDriver() {
        Driver driver = GWT.create(Driver.class);
        driver.initialize(this);
        return driver;
    }

}
public class DeviceEditorDialogPresenterWidget extends PresenterWidget<DeviceEditorDialogPresenterWidget.MyView> implements
            DeviceEditorDialogUiHandlers {

    @Inject
    DeviceEditorDialogPresenterWidget(EventBus eventBus,
                               MyView view) {
        super(eventBus, view);
        getView().setUiHandlers(this);
    }
    /**
     * {@link LocalDialogPresenterWidget}'s PopupView.
     */
    public interface MyView extends PopupView, DevicesEditView<DeviceDto>, HasUiHandlers<DeviceEditorDialogUiHandlers> {

    }

    private DeviceDto currentDeviceDTO = null;

    private SimpleBeanEditorDriver<DeviceDto, ?> driver;

    public DeviceDto getCurrentDeviceDTO() {
        return currentDeviceDTO;
    }

    public void setCurrentDeviceDTO(DeviceDto currentDeviceDTO) {
        this.currentDeviceDTO = currentDeviceDTO;
    }

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

        driver = getView().createEditorDriver();
    }
    //UiHandler Method: Person person = driver.flush();

}
@Override
public void showDeviceDialog() {
    deviceEditorDialog.setCurrentDeviceDTO(new DeviceDto());
    addToPopupSlot(deviceEditorDialog);

}
@Override
public void onReveal() {
    super.onReveal();

    driver.edit(currentDeviceDTO); // this will populate your view with the data from your POJO
}

显示弹出窗口时将调用此方法,就在您的
设备EditorDialogPresenterWidget
添加到PupSlot

之后,您可以发布
GinInjector
错误吗?很抱歉,我犯了一个新手错误,忘了在ApplicationModule中绑定视图和演示者。我重新表述了上面的问题,因为我不知道这样做是否正确。你能发布
GinInjector
错误吗?很抱歉,我犯了一个新手错误,忘了在ApplicationModule中绑定视图和演示者。我重新表述了上面的问题,因为我不知道这样做是否正确。你能发布
GinInjector
错误吗?很抱歉,我犯了一个新手错误,忘了在ApplicationModule中绑定视图和演示者。我重新表述了上面的问题,因为我不知道这样做是否正确。你能发布
GinInjector
错误吗?很抱歉,我犯了一个新手错误,忘了在ApplicationModule中绑定视图和演示者。我重新表述了上面的问题,因为我不知道这样做是否正确。谢谢你的建议