这样的问题,我在Oracle JDeveloper中工作,版本12.2.1.0.0 我已经在所有数据库表中实现了全局搜索。有搜索字段,即搜索选项。当我通过参数进行搜索查询时,记录会返回给我 - 一切都很好。当我按某些字段对这些记录进行排序并单击重置搜索参数时,为什么查询无法正常工作,它不仅清除搜索参数,还显示所有表中的所有记录。如何修复它?我的重置方法的代码如下所示。
Bean类:
public void gsearchQueryOperationListener(QueryOperationEvent queryOperationEvent){
if(queryOperationEvent.getOperation().name().toUpperCase().equals("RESET")){
ViewObject object = ADFUtils.findIterator("GeneralSearchV1Iterator").getViewObject();
object.executeEmptyRowSet();
oracle.jbo.ViewCriteria criteria = ADFUtils.findIterator("GeneralSearchV1Iterator").getViewCriteria();
object.applyViewCriteria(criteria);
result = false;
}
}
.jsff 类
<af:panelGroupLayout id="pgl1">
<!--<af:panelHeader text="Global search" id="ph1"/>-->
<af:query id="gsearchQ" headerText="Global search" disclosed="true"
value="#{bindings.GeneralSearchVCriteriaQuery.queryDescriptor}"
model="#{bindings.GeneralSearchVCriteriaQuery.queryModel}"
queryListener="#{pageFlowScope.GSearchBean.gsearchQueryListener}"
queryOperationListener="#{pageFlowScope.GSearchBean.gsearchQueryOperationListener}"
partialTriggers="::t1:c4 ::t1:c18 ::t1"
saveQueryMode="hidden" maxColumns="2" rows="3" modeChangeVisible="false" resultComponentId="::t1"/>
<!--queryListener="#{pageFlowScope.GSearchBean.gsearchQueryListener}"-->
<!--queryOperationListener="#{pageFlowScope.GSearchBean.gsearchQueryOperationListener}"-->
<af:table value="#{bindings.GeneralSearchV1.collectionModel}" var="row"
rows="#{bindings.GeneralSearchV1.rangeSize}" fetchSize="#{bindings.GeneralSearchV1.rangeSize}"
emptyText="" id="t1"
autoHeightRows="10" rowBandingInterval="0" styleClass="AFStretchWidth" columnStretching="last"
disableColumnReordering="true" scrollPolicy="page">
我尝试以某种方式修复它,但没有成功。这是我尝试过的代码
public void gsearchQueryOperationListener(QueryOperationEvent queryOperationEvent){
if(queryOperationEvent.getOperation().name().toUpperCase().equals("RESET")){
log.info("STEP 1:");
ViewObject object = ADFUtils.findIterator("GeneralSearchV1Iterator").getViewObject();
RichQuery queryComp1 = (RichQuery) UIComponentUtil.findComponent("gsearchQ");
log.info("queryComp1.getAttributeChangeListeners(); "+queryComp1.getAttributeChangeListeners());
queryComp1.setValue(null);
RichTable queryComp2 = (RichTable) UIComponentUtil.findComponent("t1");
log.info("queryComp2.getAttributeChangeListeners(); "+queryComp2.getAttributeChangeListeners());
log.info("queryComp2.getSelectedRowKeys(); "+queryComp2.getSelectedRowKeys());
queryComp2.getSelectedRowKeys().clear();
queryComp2.setSelectedRowKeys(null);
queryComp2.setValue(null);
queryComp2.getSelectedRowKeys().clear();
queryComp2.setSelectedRowKeys(null);
AdfFacesContext.getCurrentInstance().addPartialTarget(queryComp2);
object.setOrderByClause(null);
object.setSortBy(null);
object.executeEmptyRowSet();
oracle.jbo.ViewCriteria criteria = ADFUtils.findIterator("GeneralSearchV1Iterator").getViewCriteria();
object.applyViewCriteria(criteria);
result = false;
}
查看这篇博文https://www.jobinesh.com/2011/04/programmatically-resetting-and-search.html 这对我使用 JDev 12.2.1.4 有效