我想在创建新元素时动态刷新。 我找到了3个解决方案,并且想知道哪个是最好的并且更喜欢。 或者说:我喜欢nr。 3(ajax)最多,但不幸的是这是一个不起作用的人。我想知道如何让它发挥作用。
A)。与@Observes:
公共课门面{
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)。只需在createNew:
的命令中直接调用findAll update方法 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的工作延迟了:例如,创建customer1&gt;什么都没发生。 create cust2&gt;数据表刷新并显示cust1。等等。
我该如何解决?
非常感谢
答案 0 :(得分:0)
您需要在添加新条目后重新加载列表,就像在b)中一样。