Hello,
I am finding problem while submitting form on button click.
I have simple login form with login button. User name and password fields
are required. The button type is submit in html. But when I click the
button the page does not show feedback messages. On clicking browser page
refresh/reload (F5) only I see the feedback message. Could anybody suggest
me what I am missing?
Here is the page:
public class Login extends WebPage {
NotificationPanel feedbackPanel;
public Login() {
feedbackPanel = new NotificationPanel("statusbar");
feedbackPanel.setOutputMarkupId(true);
feedbackPanel.setMarkupId("statusbarId");
add(feedbackPanel);
Form<Void> form = new Form<Void>("login-form"){
@Override
protected void onSubmit() {
super.onSubmit();
System.out.println("Form onSubmit called...");
}
};
form.setOutputMarkupId(true);
add(form);
form.add(userNameField("username", form));
form.add(passwordField("password", form));
AjaxFallbackButton submitButton = addLoginButton("login-button",
form);
form.add(submitButton);
form.setDefaultButton(submitButton);
form.setOutputMarkupId(true);
}
private PasswordTextField passwordField(String property, Form<Void>
form) {
PasswordTextField passwordTextField = new
PasswordTextField(property);
passwordTextField.setOutputMarkupId(true);
passwordTextField.setRequired(true);
passwordTextField.setMarkupId(property.concat("Id"));
return passwordTextField;
}
private RequiredTextField<String> userNameField(String property,
Form<Void> form) {
RequiredTextField<String> userNameFld = new
RequiredTextField<String>(property) {
@Override
protected void onComponentTag(ComponentTag tag) {
super.onComponentTag(tag);
if (!isValid()) {
tag.put("style", "background-color:red");
}
}
};
userNameFld.setOutputMarkupId(true);
userNameFld.setMarkupId(property.concat("Id"));
return userNameFld;
}
private AjaxFallbackButton addLoginButton(String property, Form<Void>
form) {
AjaxFallbackButton submitBtn = new AjaxFallbackButton(property,
form) {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form)
{
super.onSubmit(target, form);
target.add(form);
}
};
submitBtn.setDefaultFormProcessing(true);
return submitBtn;
}
}
Here is Mark up:
<div wicket:id="statusbar">
<form wicket:id="login-form">
<div style="width:100%">
<div style="display:table-row;">
<div class="login-l">
User Name:
</div>
<div class="login-t">
<input type="text" wicket:id="username"
placeholder="User Name" style="width:250px; text-align:left;">
</div>
</div>
<div style="display:table-row;">
<div class="login-l">
Password:
</div>
<div class="login-t">
<input type="password" wicket:id="password"
placeholder="Password" style="width:250px; text-align:left;">
</div>
</div>
<div style="display:table-row;">
<div class="button-container">
<input type="submit" value="Login"
wicket:id="login-button"/>
</div>
</div>
</div>
</form>
Thanks,
-Mihir.