ログインページで、Enter キーを押すイベントをパスワードテキストフィールドにバインドしようとしています。イベントリスナーを起動することができました。しかし、私が直面している問題は、ユーザー名のテキスト フィールドの値が null を返すことですが、パスワード フィールドの値は 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を返します。
どんな情報も私にとって非常に役に立ちます。
ありがとう。