2012-02-07 9 views
0

新しいElementsが作成されたときに動的にリフレッシュしたいと思います。 私は3つのソリューションを紹介しました。どちらが最善であるかを知りたいと思っています。 または、むしろ:私はnrが好きです。 3(ajax)がほとんどですが、残念ながらこれは動作しないものです。私はそれをどのように機能させることができるのだろうかと思います。新しいエントリを追加した後にajaxでデータテーブルを更新する

a)。

パブリッククラス外観{

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; 
} 

}

B):@Observes有します。単にcreateNewの中のfindAllの更新メソッドを呼び出してください:

public void createNew() { 
     service.create(newCustomer); 
     findAll(); 
    } 

c)。 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 refreshを実行し、cust1を表示します。等々。

どうすれば修正できますか?

どうもありがとう

答えて

0

はあなたがb)でまったく同じように、新しいエントリを追加した後、リストをリロードする必要があります。

関連する問題