динамически загружать JSF DataTable после выбора кнопки в JQuery - PullRequest
0 голосов
/ 20 апреля 2011

У меня есть данные со списком предметов. Для некоторых элементов у меня будет диалоговое окно jquery с кнопками. Выбор кнопки «да» вызовет AJAX-вызов и должен удалить элемент из списка в bean-компоненте (который работает нормально) и перезагрузить список данных (это обновление не происходит). ниже мои фрагменты кода .. Я использую JSF 2.0

  <h:dataTable binding="#{itemBean.dataTable}" value="#{itemBean.items}" 
    var="item" columnClasses="left,right" rowClasses="row1,row2" rows="4" >
        <h:column>
            <h:outputText styleClass="label" value="#{item.product.itemNo}"/>
        </h:column>
 </h:dataTable>

// ItemBean class - @Session scoped
private HtmlDataTable dataTable; 
private LinkedList<Item> items;

deleteRow(){ } method in bean is deleting item from the items list. 

 on button click in dialog prompt, .post ajax call is made as below.
    $.post('/WebApp/PromptAjaxServlet', {data:requestData}, function(response) {
                    if(validateResponse(response)){
                        $('#dialog-form').dialog('destroy');
                        $modalMessage.dialog('destroy');
                    } else {
                        // do
                    }
            });

Может кто-нибудь, пожалуйста, помогите с идеей о том, как обновить список данных после вызова ajax.

Ответы [ 2 ]

0 голосов
/ 21 апреля 2011

Это не сработает без доморощенного пользовательского видоискателя, и это не совсем тривиально (читай: много работы).Если вам нужен дополнительный уровень UI / ajax в JSF, вам стоит взглянуть на существующие библиотеки компонентов JSF, такие как PrimeFaces , RichFaces и OpenFaces ,В вашем конкретном случае PrimeFaces имеет, например, <p:dialog> компонент .

. Или, если вы действительно настаиваете, чтобы доморощенный UJ / ajax выглядел с помощью jQuery, то вам действительно нужно искать действиеоснованный на MVC фреймворк, например Spring MVC, вместо компонентного MVC-фреймворка, такого как JSF.

См. также:


Кстати, для удовлетворения ваших функциональных требований с помощью «простой ванили»«JSF, вы также можете просто взять функцию JavaScript confirm().

<h:column>
    <h:commandButton value="Delete" action="#{bean.delete}"
        onclick="return confirm('Are you sure?')" />
</h:column>
0 голосов
/ 20 апреля 2011

Ваш dataTable должен отображаться в ответе ajax.

Без дополнительной информации о том, как ваша кнопка jquery генерирует вызов ajax, и поскольку вы используете привязку компонента для dataTable, я бы предложил добавить код вваш bean.delete ().

FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add(dataTable.getClientId()); должен сделать трюк

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