我在GWT中有一個頁面,帶有幾個「編輯」按鈕。我添加了一個登錄對話框。默認情況下,按鈕被禁用。當用戶登錄時啓用頁面上的按鈕/ GWT
我想要做的是讓用戶按鈕登錄後進行。
而且,只要我把幾家運營商在if語句,它停止工作。如果我只輸入loggedIn = true
,那麼它就起作用(我的意思是它從if子句開始並繼續)。
我使用的是全局的布爾變量:
Boolean loggedIn = false;
這裏是我做的:
public void login(final VerticalPanel vp, final RootPanel rp) {
final DialogBox db = new DialogBox();
db.setAnimationEnabled(true);
db.setGlassEnabled(true);
final VerticalPanel vp0 = new VerticalPanel();
vp0.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
vp0.setWidth("100%");
final HTML loginLabel = new HTML("Login:");
loginLabel.setStyleName("h1");
final FlexTable ft0 = new FlexTable();
final FlexCellFormatter cf = ft0.getFlexCellFormatter();
ft0.setCellSpacing(10);
ft0.setHTML(0, 0, "Login:");
cf.setStyleName(0, 0, "h3");
cf.setAlignment(0, 0, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_MIDDLE);
final TextBox loginBox = new TextBox();
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
public void execute() {
loginBox.setFocus(true);
}
});
ft0.setWidget(0, 1, loginBox);
ft0.setHTML(1, 0, "Password:");
cf.setStyleName(1, 0, "h3");
cf.setAlignment(1, 0, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_MIDDLE);
final PasswordTextBox passwordBox = new PasswordTextBox();
ft0.setWidget(1, 1, passwordBox);
final Button loginButton = new Button(
"Login", new ClickHandler() {
public void onClick(ClickEvent event) {
if ((loginBox.getText() == "1234") && passwordBox.getText() == "1234") {
final HTML loginSuccessMsg = new HTML("Logged in. Please wait...");
db.add(loginSuccessMsg);
loggedIn = true;
db.hide();
rp.clear();
rp.add(vp);
}
else {
final HTML loginErrorMsg = new HTML("Username/Password incorrect! Try again.");
db.add(loginErrorMsg);
}
}
}
);
passwordBox.addKeyPressHandler(new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
if (((int)event.getCharCode()) == 13) {
loginButton.click();
}
}
});
ft0.setWidget(2, 0, loginButton);
cf.setColSpan(2, 0, 2);
cf.setAlignment(2, 0, HasHorizontalAlignment.ALIGN_CENTER, HasVerticalAlignment.ALIGN_MIDDLE);
vp0.add(ft0);
db.add(vp0);
int left = Window.getClientWidth()/3;
int top = Window.getClientHeight()/3;
db.setPopupPosition(left, top);
db.show();
//vp.add(vp0);
}
這是登錄方法。
而且這裏是我使用loggedIn
變量:
if (loggedIn) butTotalNumQuick.setEnabled(true); else butTotalNumQuick.setEnabled(false);
此外,一些細節 - 此按鈕默認是關閉的,所以此工程。
我認爲問題在於頁面(面板)需要在登錄後刷新。這就是我試圖與
rp.clear();
rp.add(vp);
,因爲,那裏rp
是RootPanel
其實我要的是一個簡單的登錄,因爲只有一個用戶,我明白,最好將它移動到服務器端。你能推薦一些很好的教程嗎?我在網上搜索了很多,但沒有找到任何像樣的。 此外,我還有一個問題 - 我想有一種存儲。即,登錄的用戶在頁面上編輯smith,然後所有其他用戶(每個用戶都已加載自己的頁面)都可以看到該編輯。你能幫助解決這個問題嗎? –
此外,當我鍵入布爾,它會給出錯誤「布爾不能解析爲一個類型」。這就是爲什麼我使用Boolean –
@GeorgeSalukvadze如果您希望其他用戶查看編輯的信息,則必須將這些信息存儲在服務器端的某個位置,例如在數據庫中。而不是使用大寫字母B的布爾值。使用gwt或多或少可以理解的登錄教程:https://varuntayur.wordpress.com/2012/01/25/session-management-in-gwt/ – Tobika