GWT-实现用于登录的对话框

GWT-实现用于登录的对话框,gwt,gwt2,uibinder,Gwt,Gwt2,Uibinder,出于测试目的,我想使用对话框登录到我的应用程序 以下是uibinder文件: <!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"> <ui:style>

出于测试目的,我想使用对话框登录到我的应用程序

以下是uibinder文件:

<!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">
  <ui:style>
  </ui:style>
    <g:HTMLPanel>
      <g:Label>Username</g:Label>
      <g:TextBox ui:field="username"></g:TextBox>
      <g:Label>Password</g:Label>
      <g:PasswordTextBox ui:field="password"></g:PasswordTextBox>
      <g:Button ui:field="login">Login</g:Button>
    </g:HTMLPanel>
</ui:UiBinder>

用户名
密码
登录
下面是我对它的实现:

public class Login extends DialogBox {
    private static LoginUiBinder uiBinder = GWT.create(LoginUiBinder.class);

    interface LoginUiBinder extends UiBinder<Widget, Login> {}

    @UiField
    TextBox username;
    @UiField
    PasswordTextBox password;
    @UiField
    Button login;

    public Login() {
        setHTML("Login");
        setWidget(uiBinder.createAndBindUi(this));
    }
}
公共类登录扩展对话框{
私有静态LoginUiBinder uiBinder=GWT.create(LoginUiBinder.class);
接口LoginUiBinder扩展UiBinder{}
@尤菲尔德
文本框用户名;
@尤菲尔德
密码文本框密码;
@尤菲尔德
按钮登录;
公共登录(){
setHTML(“登录”);
setWidget(uiBinder.createAndBindUi(this));
}
}

现在我的问题是:这是正确的方法吗?文档似乎没有说明如何做这类事情……

这就是我所做的,它在生产中已经运行了好几个月了。它非常容易理解和重用

我用相同的模式创建了一个抽象对话框,它有一个抽象方法
onConfirm
和一个内置的确认按钮。我还将在UiBinder中包含一个面板以接受小部件,并重写setWidget函数以将小部件放入该内部面板中。然后,每当我需要一个新的对话框时,我就可以写:

final CustomWidget whicheverWidgetINeedRightNow = xyz;
CustomDialog dialog = new CustomDialog()
{
    @Override
    protected void onConfirm()
    {
        process(whicheverWidgetINeedRightNow.getData());
    }
};
dialog.setWidget(whicheverWidgetINeedRightNow);
模板UiBinder中的ok按钮是硬连接的,当按下时可以调用onConfirm。漂亮!对于更复杂的情况,我会在CustomDialog自己的命名类中创建子类

在我的应用程序中,它在5到6种不同的情况下都能很好地工作,我不需要重新设计样式或重新编写代码