📜  GWT-UiBinder(1)

📅  最后修改于: 2023-12-03 14:41:40.474000             🧑  作者: Mango

GWT-UiBinder介绍

GWT-UiBinder是GWT(Google Web Toolkit)框架中一个基于XML的用户界面声明式编程技术,用于简化和加速用户界面的开发。

为什么需要使用GWT-UiBinder?

传统的GWT开发方式中,Java代码被用于编写用户界面。这样开发的方式可能会导致开发效率低下,维护难度高。GWT-UiBinder可以有效的解决这些问题,开发者可以使用XML声明UI组件,将Java代码和UI分离,从而提高开发效率和UI的可维护性。

如何使用GWT-UiBinder?
步骤一:建立基本UI组件

在使用GWT-UiBinder之前,必须先建立基本的UI组件。这些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:HTMLPanel>
        <g:Label>Hello, GWT-UiBinder!</g:Label>
    </g:HTMLPanel>
</ui:UiBinder>

上述例子中,HTMLPanel和Label是基本的UI组件,XML文件使用urn:import声明的方式引入了com.google.gwt.user.client.ui包中的这两个组件。

步骤二:创建Presenter/Widget

在使用UiBinder之前,必须对Presenter/Widget进行创建。Presenter是MVP(Model-View-Presenter)模型中的控制层,Widget是MVP模型中的视图层。以下是Presenter/Widget的例子:

public class ExamplePresenter implements Presenter {
    public interface ExampleView extends Widget {}
    private final ExampleView view;

    public ExamplePresenter(ExampleView view) {
        this.view = view;
    }
}

public class ExampleWidget extends Composite implements ExamplePresenter.ExampleView {
    private static ExampleUiBinder uiBinder = GWT.create(ExampleUiBinder.class);

    interface ExampleUiBinder extends UiBinder<Widget, ExampleWidget> {}

    public ExampleWidget() {
        initWidget(uiBinder.createAndBindUi(this));
    }
}

上述例子中,ExamplePresenter实现了Presenter接口,ExampleWidget继承了Composite,实现了ExamplePresenter.ExampleView接口,然后使用GWT.create创建了ExampleUiBinder对象,并使用initWidget方法将其绑定到ExampleWidget中。

步骤三:创建并绑定UiBinder

UiBinder可以被认为是定制组件和Presenter/Widget组合的中介程序,你可以使用它来创建一个Widget对象,然后将其传递给Presenter使用。以下是最终的实现例子:

public class ExampleUiBinder extends AbstractUiBinder<Widget, ExamplePresenter> {}

public ExampleUiBinder() {
    super(new ExampleWidget());
}

@Override
public ExamplePresenter createAndBindUi(ExamplePresenter presenter) {
    return presenter;
}

上述例子中,ExampleUiBinder继承了AbstractUiBinder,并重写了createAndBindUi方法。该方法返回注入了ExamplePresenter的Widget对象。

总结

GWT-UiBinder是一种使用声明式XML语法来编写完整GWT UI的技术,它通过更灵活、更易于维护的方式减少了编写和维护网页UI的代码量。我们可以用它来开发优雅且易于扩展的用户界面,从而提高代码的可读性和健壮性。