ADF修改默认filter查询将%改为%%方式

    public static void customQuery(QueryEvent queryEvent,String queryProcess){
        FilterableQueryDescriptor queryDescriptor = (FilterableQueryDescriptor) queryEvent.getDescriptor(); 
            ConjunctionCriterion cc = queryDescriptor.getFilterConjunctionCriterion(); 
            List<Criterion> lc = cc.getCriterionList(); 
            for(Criterion cr : lc){
                AttributeDescriptor attr = ((AttributeCriterion) cr).getAttribute();
                Object value = ((AttributeCriterion) cr).getValue();
                if(attr.getType().equals(String.class)){
                    if(value != null){
                         ((AttributeCriterion) cr).setValue("%" + value + "%");
                     }    
                }
            }
            invokeEL(queryProcess,new Class[]{QueryEvent.class},new Object[]{queryEvent});
            for(Criterion cr : lc){
                AttributeDescriptor attr = ((AttributeCriterion) cr).getAttribute();
                Object value = ((AttributeCriterion) cr).getValue();
                if(attr.getType().equals(String.class)){
                    if(value != null){
                         ((AttributeCriterion) cr).setValue(value.toString().replace("%", ""));
                     }    
                }
            } 
    }
    
    public static Object invokeEL(String el, Class[] paramTypes,Object[] params){
        FacesContext facesContext = FacesContext.getCurrentInstance();
        ELContext eLContext = facesContext.getELContext();
        ExpressionFactory expressionFactory = facesContext.getApplication().getExpressionFactory();
        MethodExpression exp = expressionFactory.createMethodExpression(eLContext, el, Object.class, paramTypes);
        return exp.invoke(eLContext, params);
    }

调用的地方为以下,比如通过一个按钮点击事件,其中queryProcess参数为table组件中queryListener属性的值,现在如今修改为以下自定义方式

    public void queryMyOrder(QueryEvent queryEvent) {        
        String queryProcess = "#{bindings.TPurchasedProductsView1Query.processQuery}";
        ADFUtils.customQuery(queryEvent, queryProcess);        
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值