我想在GWT中创建一个小部件。有两种方法存在。
public class Login extends Composite {
private static LoginUiBinder uiBinder = GWT.create(LoginUiBinder.class);
/*
* @UiTemplate is not mandatory but allows multiple XML templates
* to be used for the same widget.
* Default file loaded will be <class-name>.ui.xml
*/
@UiTemplate("Login.ui.xml")
interface LoginUiBinder extends UiBinder<Widget, Login> {
}
...
}
和XML文件是
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:gwt='urn:import:com.google.gwt.user.client.ui'
xmlns:res='urn:with:com.tutorialspoint.client.LoginResources'>
<ui:with type="com.tutorialspoint.client.LoginResources" field="res">
</ui:with>
<gwt:HTMLPanel>
</gwt:HTMLPanel>
</ui:UiBinder>
public class HelloWorld implements EntryPoint {
/**
* A composite of a TextBox and a CheckBox that optionally enables it.
*/
private static class OptionalTextBox extends Composite {
public OptionalTextBox(String caption) {
VerticalPanel decoratorPanel = new VerticalPanel();
initWidget(decoratorPanel);
}
}
所以我很困惑哪种方法很好用。有什么不同吗我使用了两种方法,但没有任何想法。
答案 0 :(得分:2)
您正在显示相同的方法。在两个示例中,新的小部件都扩展了Composite。编译后的代码没有任何有意义的区别。
唯一的区别是一个例子使用UiBinder,而另一个例子没有。
就个人而言,我更喜欢使用UiBinder,除非我创建一个非常简单的小部件,没有样式和文本字符串(我的应用程序是国际化的)。根据我的经验,UiBinder模板更易于维护和故障排除。