添加新条目后,使用ajax刷新数据表

时间:2012-02-07 15:39:17

标签: java ajax jsf

我想在创建新元素时动态刷新。 我找到了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。等等。

我该如何解决?

非常感谢

1 个答案:

答案 0 :(得分:0)

您需要在添加新条目后重新加载列表,就像在b)中一样。