Обновить данные с помощью Ajax после добавления новой записи - PullRequest
0 голосов
/ 07 февраля 2012

Я хотел бы динамически обновлять, когда новые элементы были созданы. Я нашел около 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. и т. д.

Как я могу это исправить?

Большое спасибо

1 Ответ

0 голосов
/ 07 февраля 2012

Вам необходимо перезагрузить список после добавления новой записи, точно так же, как вы это делали в b).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...