我想从AdvancedCriteria中获取值

时间:2014-02-04 16:42:43

标签: gwt smartgwt

我想从AdvancedCriteria中获取值  我的代码是这样的 现在我如何从对象中检索值? 你是如何从标准中获得价值的?

AdvancedCriteria cr = filterBuilder.getCriteria();
JavaScriptObject jso = cr.getJsObj();
Map map = cr.getValues();
Set keys = map.keySet();
Iterator it = keys.iterator();
while( it.hasNext()){
String key = it.next().toString();
system.out.println("=> "+map.get(key));
}


Out put  
 => AdvancedCriteria               
 => and              
=> [object Object] 

1 个答案:

答案 0 :(得分:0)

要使用内部标准和高级标准打印高级标准,您可以执行以下操作:

public void onClick(ClickEvent event) {
    AdvancedCriteria crit = filterBuilder.getCriteria();
    printCriteria(crit, 0);
}

public void printCriteria(AdvancedCriteria ac, int level) {
    char[] indentArray = new char[level];
    Arrays.fill(indentArray, '\t');
    String indent = new String(indentArray);

    OperatorId operator = ac.getOperator();
    Criteria[] c = ac.getCriteria();
    for (int i = 0; i < c.length; i++) {
        if (c[i].isAdvanced()) {
            System.out.println(indent + "(");
            printCriteria(c[i].asAdvancedCriteria(), level + 1);
            System.out.println(indent + ")");
        } else {
            System.out.println(indent + 
                c[i].getAttributeAsString("fieldName") + " " +
                c[i].getAttributeAsString("operator") + " " +
                c[i].getAttributeAsString("value"));
    }
    if ((i + 1) < c.length) {
        System.out.println(indent + operator);
    }
}