I create a simple wicket web app for using description this problem when i set require is true at TextField and submit with null value in Textfield. i have got a feedback panel message (This sound good) but my use case i want to get my data from modal windows and send back to this form but it can not AjaxRequestTarget update TextField data and cannot input anything on other textfield.i cannot solve with this problem.please help me.but when i run web app again and used modal windows i can setting my data on text field.
This is my sample Code
User Entity :
public class User implements Serializable {
private String username;
private String password;
public User(String username, String password){
this.username = username;
this.password = password;
}
public User() {
// TODO Auto-generated constructor stub
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
My Page
public class FormPage extends WebPage{
private User user;
private ModalWindow modal;
private TestForm form;
public FormPage() {
user = new User();
modal = new ModalWindow("modal");
modal.setOutputMarkupId(true);
modal.setInitialHeight(300);
modal.setInitialWidth(300);
add(modal);
form = new TestForm("form");
add(form);
}
private class TestForm extends Form {
private FeedbackPanel feedback;
private TextField<String> username;
private AjaxLink popupButton;
private AjaxButton submitButton;
private TextField<String> password;
public TestForm(String id) {
super(id);
feedback = new FeedbackPanel("feedback");
feedback.setOutputMarkupId(true);
add(feedback);
username = new TextField<String>("username", new PropertyModel<String>(FormPage.this, "user.username"));
username.setOutputMarkupId(true);
username.setRequired(true);
add(username);
password = new TextField<String>("password", new PropertyModel<String>(FormPage.this, "user.password"));
password.setOutputMarkupId(true);
password.setRequired(true);
add(password);
popupButton = new AjaxLink("popupButton") {
@Override
public void onClick(AjaxRequestTarget target) {
UserPopup popup = new UserPopup(modal.getContentId()) {
@Override
public void onSuccess(AjaxRequestTarget target, User user) {
FormPage.this.user = user;
target.addComponent(username);
target.addComponent(password);
modal.close(target);
}
};
modal.setContent(popup);
modal.show(target);
}
};
add(popupButton);
submitButton = new AjaxButton("submitButton", this) {
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
// TODO Auto-generated method stub
}
@Override
protected void onError(AjaxRequestTarget target, Form<?> form) {
target.addComponent(feedback);
}
};
add(submitButton);
}
}
}
my popup :
public abstract class UserPopup extends Panel{
private User user;
public UserPopup(String id) {
super(id);
user = new User("name","pass");
add(new AjaxLink("userLink"){
@Override
public void onClick(AjaxRequestTarget target) {
onSuccess(target, user);
}
});
}
public abstract void onSuccess(AjaxRequestTarget target,User user);
}