Фильтр по таблице ADF с использованием объекта просмотра
Мне нужен фильтр на моем af:table, уже пробовал нативный метод adf filterVisible="true"
и установив filterable="true"
но это не возвращает результаты на столе. Также попытался сделать это с помощью метода manageBean, который я собираюсь опубликовать ниже:
страница jsff
<af:commandButton text="Filter" id="cb1" actionListener="#
{pageFlowScope.paisMB.filterTableAction}"/>
<af:table value="#{bindings.PaisUVO.collectionModel}" var="row"
rows="#{bindings.PaisUVO.rangeSize}"
emptyText="#{bindings.PaisUVO.viewable ? 'No data to display.' : 'Access Denied.'}"
fetchSize="#{bindings.PaisUVO.rangeSize}"
rowBandingInterval="0" styleClass="AFStretchWidth"
selectionListener="#{bindings.PaisUVO.collectionModel.makeCurrent}"
rowSelection="single" id="t1" binding="#{pageFlowScope.paisMB.tableData}"
scrollPolicy="page" autoHeightRows="0"
filterModel="#{bindings.PaisUVOQuery.queryDescriptor}"
queryListener="#{bindings.PaisUVOQuery.processQuery}" filterVisible="true">
<af:column sortProperty="#{bindings.PaisUVO.hints.NewsiteOxiLingua.name}"
sortable="false"
headerText="#{bindings.PaisUVO.hints.NewsiteOxiLingua.label}"
id="c6">
<af:outputText value="#{row.NewsiteOxiLingua}" id="ot3"/>
</af:column>
<af:column sortProperty="#{bindings.PaisUVO.hints.NewsiteOxiPaisesPk.name}"
sortable="false"
headerText="#{bundle['lbl_codigo']}"
id="c5">
<af:outputText value="#{row.NewsiteOxiPaisesPk}" id="ot4">
<af:convertNumber groupingUsed="false"
pattern="#{bindings.PaisUVO.hints.NewsiteOxiPaisesPk.format}"/>
</af:outputText>
</af:column>
<af:column sortProperty="#{bindings.PaisUVO.hints.NewsiteOxiPaisesNome.name}"
sortable="false" filterable="true"
headerText="#{bundle['lbl_pais']}"
id="c7">
<af:outputText value="#{row.NewsiteOxiPaisesNome}" id="ot2"/>
</af:column>
</af:table>
Я хочу отфильтровать мой последний столбец. Ниже приведен мой код Java для кнопки поиска.
Управление бобовой страницей
private transient RichTable tableData;
private RichInputText countryName;
public void filterTableAction(ActionEvent actionEvent) {
RichTable tb1 = this.getTableData();
FilterableQueryDescriptor filterQD = (FilterableQueryDescriptor)tb1.getFilterModel();
Map filterCriteria = filterQD.getFilterCriteria();
filterCriteria.put("NewsiteOxiPaisesNome", countryName.getValue());
LOGGER.warning("Filter Criteria : " + filterCriteria);
getTableData().queueEvent(new QueryEvent(getTableData(), filterQD));
AdfFacesContext.getCurrentInstance().addPartialTarget(this.getTableData());
LOGGER.warning("OnFilterTable Action is Called : " + filterQD);
}
Моя таблица основана на представлении объекта. Может кто-нибудь сказать мне, что я делаю не так. Моя таблица просто не возвращает результат поиска, также не выдает ошибку. Если есть еще лучший способ сделать это, я открыт для предложений. Версия jdev есть 11.1.1.7.0
1 ответ
Под исполняемыми файлами в файле pageDef.xml, который определяет привязки к этой странице, убедитесь, что у вас есть PaisUVOQuery searchRegion. Он определяет область поиска, которую фильтр будет использовать для поиска. Например
"... ..."
установите привязки к вашему правильному итератору. У меня была похожая проблема, и это сработало для меня.