Я создаю простое веб-приложение для калитки, использующее описание этой проблемы, когда я устанавливаю значение true в TextField и отправляю с нулевым значением в Textfield.У меня есть сообщение панели обратной связи (это звучит хорошо), но в моем случае я хочу получить свои данные из модальных окон и отправить обратно в эту форму, но он не может AjaxRequestTarget обновить данные TextField и не может ничего вводить в другое текстовое поле. Я не могу решитьс этой проблемой. пожалуйста, помогите мне. но когда я снова запускаю веб-приложение и использую модальные окна, я могу установить свои данные в текстовом поле.
Это мой пример кода
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;
}
}
Моя страница
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);
}
}
}
мое всплывающее окно:
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);
}