На моей странице входа я пытаюсь связать событие нажатия клавиши ввода с текстовым полем пароля. Мне удалось запустить прослушиватель событий. Но проблема, с которой я столкнулась, - это значение имени поля 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()
но также возвращает нуль.
Любая информация будет очень полезна для меня.
Спасибо.