2012-05-12 3 views
0

На моей странице входа я пытаюсь связать событие нажатия клавиши ввода с текстовым полем пароля. Мне удалось запустить прослушиватель событий. Но проблема, с которой я столкнулась, - это значение имени поля textfield, возвращающего значение null, но значение поля пароля не равно нулю. Код приведен ниже:Отправить форму на Enter press - Значение текстового поля Null

public class LoginForm extends Form<Void> { 
    private transient final ValueMap properties = new ValueMap(); 

    public LoginForm(final String formId) { 
     super(formId); 

     final TextField<String> username = new TextField<String>("username", new PropertyModel<String>(getProperties(), "username")); 
     add(username); 

     final TextField<String> password = new TextField<String>("password", new PropertyModel<String>(getProperties(), "password")); 
     add(password); 

     password.add(new AjaxFormComponentUpdatingBehavior("onkeypress") { 

      @Override 
      protected void onComponentTag(ComponentTag tag) { 
       Component component = getComponent(); 
       if (component.isEnabled() && component.isEnableAllowed()) { 
        CharSequence handler = generateCallbackScript(new AppendingStringBuffer("wicketAjaxPost('").append(getCallbackUrl()).append("', wicketSerialize(Wicket.$('" + getComponent().getMarkupId() + "'))")); 
        String event = "if (event.keyCode == 13) {" + handler.toString() + "};"; 
        tag.put("onkeypress", event); 
       } 
      } 

      @Override 
      protected void onUpdate(AjaxRequestTarget target) {     
       System.out.println(getUsername()); 
       System.out.println(getPassword()); 
      } 
     }); 
    } 

    public ValueMap getProperties() { 
     return properties; 
    } 

    private String getPassword() { 
     return getProperties().getString("username"); 
    } 

    private String getUsername() { 
     return getProperties().getString("password"); 
    } 
} 

system.out печатает

null 
password 

Я также попытался использовать username.getDefaultModelObject() но также возвращает нуль.

Любая информация будет очень полезна для меня.

Спасибо.

ответ

1

Вам необходимо отправить свой LoginForm с помощью Javascript. Это вызовет обычную обработку формы Wicket и сохранит значения в моделях. Вы должны иметь возможность отправить форму через:

document.getElementById('myform').submit(); 

Но, я не проверял его.

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