2012-05-12 7 views
0

私のログインページでは、キープレスイベントをパスワードtextfieldでバインドしようとしています。私はイベントリスナーを起動することができました。しかし、私が直面している問題は、テキストフィールドユーザー名の値がnullを返すことですが、パスワードフィールドの値はnullではありません。コードは以下のとおりである:Enter form on submit - テキストフィールド値が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()を使用しようとしたが、それはまた、NULLを返しています。

すべての情報は私にとって非常に役立ちます。

ありがとうございました。

答えて

1

ログインフォームをJavascriptで送信する必要があります。これは通常のWicketフォーム処理をトリガし、その値をモデルに格納します。

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

しかし、私はそれをテストしていません。