Oracle ADF或Java

时间:2016-01-18 06:24:40

标签: java oracle oracle-adf

我正在使用ADF autoSuggestBehavior来显示值列表。 但问题是它只显示以键入的字符开头的值,我想显示包含该特定字符的所有结果。

示例 - 如果有国家/地区列表并且您键入U,则会建议以U开头的国家/地区。但我想要的是显示包含字母U的所有国家/地区可能是起始字符或结束字符

请在JAVA或ADF中建议任何解决方案。

1 个答案:

答案 0 :(得分:1)

在创建LOV的基础上转到ViewObject的ViewObjectImpl类并粘贴以下代码。

在autosuggest的情况下调用applyViewCriteria(ViewCriteria,boolean)并覆盖此方法将解决您的问题

@Override
    public void applyViewCriteria(ViewCriteria viewCriteria, boolean b) {
        super.applyViewCriteria(supressStartsWithClauseForLov(viewCriteria), b);
    }

    public ViewCriteria supressStartsWithClauseForLov(ViewCriteria vc){
        if(vc != null && vc.getName().contains("__lov__filterlist__vcr__")){
            ViewCriteriaRow currentRow = (ViewCriteriaRow)vc.getCurrentRow();
            if(currentRow != null){
                List criteriaItems = currentRow.getCriteriaItems();
                for(int i = 0 ; i < criteriaItems.size() ; i++){
                    ViewCriteriaItem object = (ViewCriteriaItem)criteriaItems.get(i);
                    if(object != null){
                        System.out.println("Operator is : "+object.getOperator());
                        if("STARTSWITH".equals(object.getOperator())){
                            object.setOperator("CONTAINS");
                        }
                    }
                }
            }
        }
        return vc;
    }