Ok, вот мой контроллер с помощью Wicket 1.5M2:Калитка: ListView не обновляется при использовании нескольких окон браузера в простой CRUD
public class Users extends WebPage {
private static final List<User> users = Collections.synchronizedList(new ArrayList<User>());
public Users() {
final UserForm userForm = new UserForm("userForm");
add(userForm);
add(new ListView<User>("users", users) {
@Override
protected void populateItem(ListItem<User> item) {
final User user = item.getModelObject();
item.add(new Label("name", user.getName()));
item.add(DateLabel.forDatePattern("dateOfBirth", new Model(user.getDateOfBirth()), "dd.MM.yyyy"));
item.add(new Label("email", user.getEmail()));
item.add(new Link("editLink") {
@Override
public void onClick() {
userForm.setModelObject(user);
}
});
item.add(new Link("removeLink") {
@Override
public void onClick() {
users.remove(user);
}
});
}
});
setVersioned(false);
}
private class UserForm extends Form<User> {
public UserForm(String id) {
super(id, new CompoundPropertyModel<User>(new User()));
add(new TextField<String>("name"));
add(DateTextField.forDatePattern("dateOfBirth", "dd.MM.yyyy"));
add(new TextField<String>("email"));
}
@Override
protected void onSubmit() {
User user = getModelObject();
users.remove(user);
users.add(user);
setModelObject(new User());
}
}
}
Это работает, когда я использую только одно окно браузера, в то время для CRUD операций. Если я использую два окна, список пользователей не обновляется, если только я не введу базовый адрес в поле адреса, чтобы перезагрузить страницу.
РАЗРАБОТКА: Использование разных браузеров одновременно на одном компьютере работает хорошо. Только при использовании нескольких окон в одном браузере это не работает.
Что происходит за кулисами?
Я поставил setVersioned (ложь) для всей страницы, почему это, что мой адрес бар показывает адреса, такие как: http://localhost:8080/wicket/bookmarkable/package.name.Users?2 Разве это не номер 2 версии страницы?
Самое главное, что мне нужно сделать, чтобы это было похоже на графическое приложение для рабочего стола, поэтому одно окно браузера == один экземпляр приложения.