删除<af:query>中的尾随空格

时间:2018-08-27 17:36:18

标签: oracle-adf jdeveloper

我想知道JDeveloper是否带有预设配置设置,该设置可让您从给定的字符串中删除任何尾随空格。之后,在af:query搜索条件内的字符串中添加一个额外的空格,搜索显示0个结果。由于我使用View Criteria定义了where子句,有什么方法可以修剪搜索条件以在JDeveloper中显示查询? 预先谢谢你!

2 个答案:

答案 0 :(得分:1)

不幸的是,JDeveloper中没有预设配置,可以让您在查询组件内修剪字符串。为了解决此问题,您将必须创建一个自定义方法,该方法将检索输入了搜索参数的所有搜索字段,对其进行修剪,将其重新设置并用作AttrivetureCriterion。

答案 1 :(得分:1)

Jdeveloper中没有预设配置。但是,如果要修剪从搜索查询组件中选择的字符串。因此,您可以在af:query标记中覆盖queryListner属性。

例如,

 <af:query id="qryId2" headerText="Search" disclosed="true"
                          value="#{bindings.CreationDtVCriteriaQuery.queryDescriptor}"
                          model="#{bindings.CreationDtVCriteriaQuery.queryModel}"
                          queryListener="#{pageFlowScope.mainHandler.ProcessQuery}"
                          queryOperationListener="#{bindings.CreationDtVCriteriaQuery.processQueryOperation}"
                          resultComponentId="::pc5:resId1"
                          binding="#{pageFlowScope.mainHandler.tableQuery}"
                          displayMode="compact" saveQueryMode="hidden"
                          modeChangeVisible="false"
                          inlineStyle="width:500px"/>

在上面的示例中,您可以看到重写的queryListener方法。

现在,如果查看条件在搜索组件中包含2个字段,则为

  Enquiry Name ( This is display name, In VO it is as EnqName) (Input text field)
  Enquiry Id   ( This is display name, In VO it is as EnqId) (Input text field)

现在在辅助bean中,

  public void ProcessQuery(QueryEvent queryEvent) {

    ConjunctionCriterion conCrit = qd.getConjunctionCriterion();
    //access the list of search fields
    List<Criterion> criterionList = conCrit.getCriterionList();
    for (Criterion criterion : criterionList) {
        AttributeDescriptor attrDescriptor =
            ((AttributeCriterion)criterion).getAttribute();

     if (attrDescriptor.getName().equalsIgnoreCase("EnqName")) {
        //To check which field is accessed from above both 
        //as in order, EnqName comes first and then EnqId , This condition returns true
         System.out.println("Retrived value is " ((AttributeCriterion)criterion).getValues().get(0));
         trim(((AttributeCriterion)criterion).getValues().get(0)); //trim it.. and use it
      }

    if (attrDescriptor.getName().equalsIgnoreCase("EnqId")) {
    //To check which field is accessed from above both 
      System.out.println("Retrived value is " ((AttributeCriterion)criterion).getValues().get(0));
      trim(((AttributeCriterion)criterion).getValues().get(0)); //trim it.. and use it
  }
    }
  }

修剪功能已经可用于Java。因此,您可以将检索到的值存储在String中并进行修剪。 希望这会有所帮助。