通过widgetVar获取dataTable过滤器,这是一个用于清除过滤器的复合属性

时间:2016-09-13 09:13:30

标签: primefaces datatable

我的p:dataTables都是在复合属性中生成的。因为站点上有多个表,有时我需要将widgetVar链接到变量。我使用了复合属性。

一切正常但我找不到通过widgetVar访问数据表的方法来清除过滤器,我的代码:

public static final String INT_MAX_VALUE = "2147483647";
public static final String LONG_MAX_VALUE = "9223372036854775807";

public static Number stringToMinimalNumberWithoutBigInteger(String numberStr){
    //Removing the minus sign to test the value
    String s = (numberStr.startsWith("-") ? numberStr.substring(1,numberStr.length()) : numberStr);

    if(compareStringNumber(s, LONG_MAX_VALUE) > 0){
        return new BigInteger(numberStr);
    } else if(compareStringNumber(s, INT_MAX_VALUE) > 0){
        return new Long(numberStr);
    } else {
        return new Integer(numberStr);
    }
}

//return postive if a > b, negative if a < b, 0 if equals;
private static int compareStringNumber(String a, String b){
    if(a.length() != b.length()){
        return a.length() - b.length();
    }
    for(int i = 0; i < a.length(); i++){
        if( a.codePointAt(i) != b.codePointAt(i) ){ //Or charAt()
            return a.codePointAt(i) - b.codePointAt(i);
        }
    }
    return 0;
}

我的问题是这部分:PF(#{cc.attrs.CC_tableName})

表的widgetVar设置正确,当我直接在按钮的onclick属性中输入tableName时我可以访问它,但是每个站点上只有1个表正常工作...所以如何获取dataTable通过使用复合属性?

1 个答案:

答案 0 :(得分:0)

找到解决方案,非常简单。你需要添加''altough它是一个变量,所以这个工作:

PF('#{cc.attrs.CC_tableName}')