Как найти идентификатор компонента, включая идентификатор составного компонента из резервного компонента

В нашем проекте, использующем PF5.1, у нас есть таблица данных в составном компоненте. Итак, после рендеринга страницы. идентификатор dataTable вроде j_idt123:tableForm:tableId.

Нам нужно очистить содержимое фильтра таблицы перед поиском. Я попытался использовать следующий код, чтобы найти его в компоненте поддержки, но он возвращает null.

FacesContext.getCurrentInstance().getViewRoot().findComponent("tableId");

Поскольку этот компонент будет использоваться в другом файле xhtml, эта вещь «j_idt123» каждый раз менялась. Каким будет правильный способ получить стол?


person Kuku    schedule 06.07.2015    source источник
comment
Возможно, вы захотите сделать шаг назад и переспросить конкретно о проблеме Нам нужно очистить фильтр таблицы перед поиском, а не о попытке решения этой проблемы. Могут быть лучшие способы решить эту проблему с фильтрами, которые не требуют ручного захвата компонентов из дерева (чего вы должны избегать во всех случаях внутри поддерживающего компонента).   -  person BalusC    schedule 06.07.2015
comment
@BalusC Я пытался очистить фильтрацию таблицы с помощью PF('datatableWidgetVar').clearFilters(), но, похоже, не работает, тогда я думаю очистить ее на стороне сервера. Это будет работать, когда идентификатор таблицы статичен, но не уверен, как получить идентификатор, а затем этот datatable в составном компоненте.   -  person Kuku    schedule 06.07.2015
comment
возможно, вам поможет главный ответ на этот вопрос: stackoverflow. ком/вопросы/23797476/   -  person sinclair    schedule 07.07.2015
comment
@sinclair спасибо. Я приму ваш ответ   -  person Kuku    schedule 08.07.2015


Ответы (1)


«j_idt123» — это сгенерированный идентификатор для компонентов, которые не указывают свой собственный. Просто дайте родительскому контейнеру "tableForm" идентификатор.

person sinclair    schedule 06.07.2015
comment
Я уже дал идентификатор для tableForm, j_idt123 исходит из составного компонента, содержащего tableForm. - person Kuku; 07.07.2015
comment
В ответе не говорилось, что вы должны указать его в tableForm, а в его родительском контейнере. - person BalusC; 08.07.2015