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