Странное поведение калитки TextField

Я разрабатываю клиент калитки для своего веб-сервиса.

На моих первых шагах с калиткой я заметил странное поведение. У меня есть форма, в которой я ввожу имя пользователя:

         <form wicket:id="registerForm">
            User Name <input type="text" wicket:id="userId"/><br/>
            <input type="submit" value="Register"/>
         </form>

Мой Submit для этого выглядит так:

private TextField userIdField;
private Form form;


public Register() {

    userIdField = new TextField("userId", new Model(""));

    form = new RegisterForm("registerForm");
    form.add(userIdField);
    add(form);
  }


class RegisterForm extends Form {
  public RegisterForm(String id) {
    super(id);
  }
  @Override
  public void onSubmit() {

    String userId = Register.this.getUserId();


   if(userId == "test") {
       System.out.println("normal");
   }
   else {
       System.out.println("strange");
   }

  }
}



protected String getUserId() {
    return userIdField.getDefaultModelObjectAsString();

}

}

Когда я вхожу в тест в своей форме, консоль говорит «странно».

Что с этим не так?


person user1090145    schedule 09.01.2012    source источник
comment
Вы должны проверить строки с помощью метода equals, если хотите проверить равенство содержимого. См. также здесь   -  person rotsch    schedule 10.01.2012


Ответы (1)


Помните, что при проверке на равенство строк в Java следует использовать String.equals(). Использование == вернет true только в том случае, если оба операнда являются одним и тем же экземпляром.

if (userId.equals("test")) {
    System.out.println("normal");
}

Этот вопрос может быть вам полезен: Как сравнивать строки в Java?

person Xavi López    schedule 09.01.2012
comment
Глупая ошибка начинающих. Большое спасибо! - person user1090145; 10.01.2012