Я хотел бы динамически обновлять, когда новые элементы были созданы.
Я нашел около 3 решений, и мне нравится знать, какое из них лучше, и предпочитать.
Или скорее: мне нравится нр. 3 (ajax) больше всего, но, к сожалению, это не работает. И мне интересно, как я мог заставить это работать.
а). с @Observe:
Фасад общественного класса {
private List<Customer> customerList;
public void createNew() {
service.create(newCustomer);
event.fire(newCustomer);
}
public void onCustomerChanged(
@Observes(notifyObserver = Reception.IF_EXISTS) final Customer newCustomer) {
findAll();
}
@PostConstruct
public void findAll() {
customerList = service.findByNamedQuery("Customer.ALL");
}
public List<Customer> getCustomerList() {
return customerList;
}
}
б). просто вызовите метод обновления findAll непосредственно в разделе createNew:
public void createNew() {
service.create(newCustomer);
findAll();
}
с). с Ajax:
public void createNew() {
service.create(newCustomer);
}
<h:form>
<h:commandButton id="register" action="#{facade.createNew()}"
value="Register">
<f:ajax execute="@form" render=":customerTable" />
</h:commandBUtton>
</h:form>
<h:datatable id="customerTable" var="_customer" value="facade.customerList">
К сожалению, ajax работает с задержкой: например, create customer1> ничего не происходит. create cust2> datatable обновляет и отображает cust1. и т. д.
Как я могу это исправить?
Большое спасибо