从一个选项卡切换到另一个选项卡时,无法保存值

时间:2016-04-17 16:27:59

标签: java gwt tabs

我有这个登录/注册应用程序。注册部分由两部分组成。 (带有2个选项卡的TabPanel)。第一个选项卡会检查电子邮件,如果它有效,则解锁第二个选项卡。第二个选项卡是实际注册表单的位置。

我想使用第一个标签中的电子邮件,作为第二个标签中的电子邮件,因此用户只能注册该电子邮件,因此不可编辑。 但问题是电子邮件在第二个标签中不可见。为什么会这样?

// variable declaration
private static String email;

// constructor
public RegisterViewImpl() {

    Widget tabBar = createRegistrationForm();
    tabPanel.add(tabBar);

    initWidget(tabPanel);
}


private static Widget createRegistrationForm() {

    TabPanel tabPanel = new TabPanel();

    // Create the e-mail tab
    Widget emailCheckerWidget = createEmailChecker();
    tabPanel.add(emailCheckerWidget, RegistrationFormConstants.CHECK_EMAIL_TAB);

    // Create the Personal Information Tab
    Widget personalInformationWidget = createPersonalInformationWidget();
    tabPanel.add(personalInformationWidget, RegistrationFormConstants.DETAILS_TAB);

...
}

private static Widget createEmailChecker() {

...

submitButton.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            // this is how I save my email
            email = emailBox.getText();
            checkIfEmailExists(email);
            emailBox.setText(null);
        }
    });
...
}




private static Widget createPersonalInformationWidget() {

...

// E-Mail Address
Label emailAddress = new Label("E-Mail Address");
final TextBox emailBox = new TextBox();
// this is how I want ot set it
emailBox.setText(email);
emailBox.setEnabled(false);
emailBox.setStyleName("fixed-input");

...
}

1 个答案:

答案 0 :(得分:0)

您在用户输入其电子邮件之前创建表单。因此,您的表单不会显示它。用户点击提交按钮后应调用emailBox.setText(email);