在GORM中建立标准
|
if (params.filters) {
def o = JSON.parse(params.filters);
def groupOp = o.groupOp
def fields = o.rules.field
def values = o.rules.data
def op = o.rules.op
println fields
println values
if(groupOp == \"AND\") {
fields.eachWithIndex {a, i ->
println op[i]
if(op[i].equals( \"eq\")) {
and{ eq(fields[i], values[i])}
}
if(op[i].equals(\"ne\")) {
and{ ne(fields[i], values[i])}
}
if(op[i].equals(\"ge\")) {
def valu = Double.valueOf( values[i]);
and{ ge(fields[i], valu)}
}
}
}
if(groupOp == \"OR\") {
fields.eachWithIndex {a, i ->
println op[i]
if(op[i].equals( \"eq\")) {
println \'eq\';
or{ eq(fields[i], values[i])}
}
if(op[i].equals(\"ne\")) {
println \'ne\';
or{ ne(fields[i], values[i])}
}
if(op[i].equals(\"ge\")) {
def valu = Double.valueOf( values[i]);
or{ ge(fields[i], valu)}
}
}
}
}
其中params.filters
跟随JSON文本。
{
\"groupOp\":\"OR\",
\"rules\":[
{
\"field\":\"foo1\",
\"op\":\"le\",
\"data\":\"9.5\"
},
{
\"field\":\"foo2\",
\"op\":\"eq\",
\"data\":\"12345-123\"
},
{
\"field\":\"foo3\",
\"op\":\"cn\",
\"data\":\"IDM\"
}
]
}
此数据来自JQuery数据网格。
有更好的方法吗?
在代码中,我只列出了3个运算符,但实际上我有14个运算符。
没有找到相关结果
已邀请:
2 个回复
街茬
所以你可能会喜欢
无论如何,您只需要清理仅允许的一部分操作的Web提交查询。您不想接收结束执行任意
,对吗? :D因此,无论如何,代码将变得更加复杂。 注意:将
或
环绕在单个语句中没有意义,您需要将其放在整个
-s块中。
校勒魏寡