2016-02-02 1 views
0

В настоящее время я создаю серверную WebApp на основе Java, используя Vaadin. Теперь я ньюб в отношении Ваадина, поэтому, пожалуйста, будьте осторожны. ;)Java: Vaadin Login-screen Web-App ведет себя неестественно

Вот моя проблема: в настоящее время я строю экран входа в систему. Я настраивал имя пользователя и пароль как глобальные переменные для целей тестирования. На экране входа в систему пользователь просто вводит свое имя пользователя и пароль, а при нажатии кнопки входа в систему код сравнивает значения, введенные в текстовые поля, с значениями глобальных переменных. Если значения совпадают, всплывающее уведомление о том, что логин был успешным, в противном случае вы просто получите сообщение об ошибке.

Вот проблема: когда я вызываю значение String для username.getValue() (из текстового поля) и сравниваю его с именем пользователя, хранящимся в глобальной переменной, оператор if-else всегда переходит к ветке else, что указывает на то, что для некоторые эзотерические причины, строки не совпадают. Дело в том, что они делают. Просто, чтобы убедиться, что я не наблюдал за чем-либо, я печатаю значения, введенные в текстовые поля на консоли, и способ их получения точно соответствует тому, как данные хранятся в глобальных переменных.

Кто-нибудь есть идеи, почему этот кусок кода пытается ввернуться с моим здравомыслием?

Вот код:

package com.example.vaadintestgui; 

import java.util.Locale; 

import javax.servlet.annotation.WebServlet; 

import com.vaadin.annotations.Theme; 
import com.vaadin.annotations.VaadinServletConfiguration; 
import com.vaadin.server.Page; 
import com.vaadin.server.VaadinRequest; 
import com.vaadin.server.VaadinServlet; 
import com.vaadin.ui.Alignment; 
import com.vaadin.ui.Button; 
import com.vaadin.ui.Button.ClickEvent; 
import com.vaadin.ui.Notification; 
import com.vaadin.ui.PasswordField; 
import com.vaadin.ui.TextField; 
import com.vaadin.ui.UI; 
import com.vaadin.ui.VerticalLayout; 

@SuppressWarnings("serial") 
@Theme("vaadintestgui") 
public class VaadintestguiUI extends UI { 

private static final String username = "admin"; 
private static final String password = "r00t"; 

@WebServlet(value = "/*", asyncSupported = true) 
@VaadinServletConfiguration(productionMode = false, ui = VaadintestguiUI.class) 
public static class Servlet extends VaadinServlet { 
} 

@Override 
protected void init(VaadinRequest request) { 
    final VerticalLayout layout = new VerticalLayout(); 
    layout.setMargin(true); 
    setContent(layout); 

    UI.getCurrent().setLocale(new Locale("en")); 
    Page.getCurrent().setTitle("Login"); 



    final TextField uname = new TextField("Username:"); 
    final PasswordField pass = new PasswordField("Password:"); 


    Button loginButton = new Button("Login"); 
    loginButton.addClickListener(new Button.ClickListener() { 
     public void buttonClick(ClickEvent event) { 
      Notification.show("Cheking Credentials..."); 

      // Just for debugg purposes: 
      System.out.println("uname: "+uname.getValue()+" password: "+pass.getValue()); 

      // Something is wrong here....: 
      if(uname.getValue() == username && pass.getValue() == password){ 
       Notification.show("Login Succesfull!"); 
      } else { 
       Notification.show("Wrong login credentials. Please try again."); 
       } 
     } 
    }); 

    layout.addComponent(uname); 
    layout.setComponentAlignment(uname, Alignment.MIDDLE_CENTER); 
    layout.addComponent(pass); 
    layout.setComponentAlignment(pass, Alignment.MIDDLE_CENTER); 
    layout.addComponent(loginButton); 
    layout.setComponentAlignment(loginButton, Alignment.MIDDLE_CENTER); 
} 

}

Я бег приложения на сервере tomcat8 LOCALHOST стороны клиента (на данный момент). Любая помощь будет принята с благодарностью!

+3

Вы должны всегда использовать .equals() для сравнения строк не == –

+0

Ну, у нас это есть. решил это. Тем не менее, есть одна вещь, которая меня заинтересовала бы: какая разница в обработке данных при использовании == и .equals? означает «логическое» выражение, они делают то же самое, но как именно язык программирования или компилятор интерпретируют это? –

+0

Например, это объясняет это: http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java –

ответ

0

Сравнение строк всегда должно быть сделано с .equals() вместо ==

 Смежные вопросы

  • Нет связанных вопросов^_^