2010-03-10 4 views
1

У меня есть богатый dataTable, который определен внутри a4j: outputPanel, и привязан к компоненту поддержки, зависящему от сеанса, который создает HtmlDataTable. Сама по себе часть моего кода работает нормально, а dataTable выглядит хорошо.динамические richfaces dataTable, ajax4jsf и reRendering

На другой части страницы есть некоторые основные текстовые ссылки, которые я создаю как a4j: commandLinks, а когда их нажимают, dataTable следует перерисовывать новыми данными о столбцах и столбцах. Обновление данных строки отлично, но данные столбца (текст заголовка, ширина и т. Д.) - нет.

После копания кода немного, кажется, что вызов бэк-компонента для HtmlDataTable не выполняется во время повторной передачи этой таблицы, но он перезаписывается, если вся страница перезагружается; поэтому кажется, что это просто часть ajax4jsf/reRendering, которая кусает меня здесь.

Есть ли способ, с помощью которого процесс reRender может привести к аннулированию структуры dataTable, чтобы он снова вызвал компонент базы данных?

Если это что-то значит, я также использую Seam; поэтому, если есть решение, которое можно найти с его помощью, это тоже будет полезно.

Спасибо!

ответ

1

Для потомков, я нашел решение: всякий раз, когда запрос a4j сделан в мой компонент прослушивателя действий, я рассказываю ему, что компонент dataTable-building будет очищать его таблицу. Этот компонент затем выполняет простой myDataTable.getParent(). GetChildren(). Remove (myDataTable). Эта страница помогла мне разобраться: http://www.coderanch.com/t/213312/JSF/java/dynamic-datatable-binding.

0

В своем действии просто удалите из области контекст, связанный с сеансом.

Например:

<a:commandLink action="#{someBean.perform}" value="Submit" reRender="myTable"/> 

и действие:

@Name("someBean") 
public class SomeBean { 

    public void perform() { 
    //do stuff 

    Contexts.removeFromAllContexts("myBean"); 
    } 
} 

Othewrwise если ваш DataTable заполняется списком, то это, вероятно, так просто, как вызов поиска() или любой другой нагрузки, метод данные.

+0

Спасибо за предложение, Дамо, но после этого изменения я все еще вижу проблему. Ваш пример - это правильная настройка: мой класс «someBean» обрабатывает щелчок командной строки, а класс «myBean» содержит ссылку на таблицу. Удаление «myBean» из всех контекстов по-прежнему показывает мне исходную структуру dataTable, даже несмотря на то, что столбцы были изменены в бэкэнде. –