Hallo,
ich möchte eine <h:datatable> dynamisch nach dem Erstellen neuer Elemente refreshen.
Dafür habe ich 3 Ansätze, und wüsste gerne welcher zu Bevorzugen ist:
1. mit @Observes
	
	
	
	
	
		
	
2. oder aber lasse die observer weg, und rufe die findAll() direkt aus der create methode aus auf:
	
	
	
	
	
		
	
3. mit ajax
	
	
	
	
	
		
	
Das Problem hier ist: Ansatz 3 gefällt mir am besten, da kein zusätzliche Code in der Javaklasse notwendig ist. Nur funktioniert der Ajax-Ansatz so nicht! Denn da ich die findAll() methode hierbei weder über observer noch explizit aufrufe, wird customerList immer erst beim post-construct erneuert. Das führt dazu: ich füge Customer1 hinzu - nicht passiert. Ich füge Cust2 hinzu - die table wird aktualisiert und zeigt Cust1. usw.
Wie bekomme ich den Ansatz mit Ajax wie gewollt zum laufen?
Danke
			
			ich möchte eine <h:datatable> dynamisch nach dem Erstellen neuer Elemente refreshen.
Dafür habe ich 3 Ansätze, und wüsste gerne welcher zu Bevorzugen ist:
1. mit @Observes
		Java:
	
	public class Facade {
 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;
 }
}
	2. oder aber lasse die observer weg, und rufe die findAll() direkt aus der create methode aus auf:
		Java:
	
	public void createNew() {
  service.create(newCustomer);
  findAll();
}
	3. mit ajax
		Java:
	
	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">...
	Das Problem hier ist: Ansatz 3 gefällt mir am besten, da kein zusätzliche Code in der Javaklasse notwendig ist. Nur funktioniert der Ajax-Ansatz so nicht! Denn da ich die findAll() methode hierbei weder über observer noch explizit aufrufe, wird customerList immer erst beim post-construct erneuert. Das führt dazu: ich füge Customer1 hinzu - nicht passiert. Ich füge Cust2 hinzu - die table wird aktualisiert und zeigt Cust1. usw.
Wie bekomme ich den Ansatz mit Ajax wie gewollt zum laufen?
Danke