Grails withCriteria If 语句?
Grails withCriteria If Statements?
是否可以在 withCriteria 块中使用 If 语句?我正在尝试执行以下操作:
allInfo = Scholarship.withCriteria {
//eq('gpa', gpa)
if (year != "All" || year != null) {
println "grades"
grades {
idEq year
}
}
if (county != "All" || county != null) {
println "county"
scholarshipCounties {
eq('county.id', county)
}
}
if (major != "All" || major != null) {
println "major"
majors {
idEq major
}
}
if (activity != "All" || activity != null) {
println "activity"
activities {
idEq activity
}
}
eq('specialTypeInd', special)
eq('activeInd', "A")
order("name", "asc")
}
年,县,专业,activity都是"All"我现在考的时候。我也已经确定它们是字符串而不是其他东西。显然它打印出成绩、县等,而它甚至不应该进入那些 if 语句。那么问题是什么?谢谢
您的布尔逻辑看起来有问题 - 像
这样的测试
if (year != "All" || year != null)
对于 year
的 任何 值, 将 总是 计算为 true
- 如果 year
为空则它不是 "All" 反之亦然。如果你想让方块触发除 "All" 之外的任何非空 year
值,那么它需要是 &&
而不是 ||
.
是否可以在 withCriteria 块中使用 If 语句?我正在尝试执行以下操作:
allInfo = Scholarship.withCriteria {
//eq('gpa', gpa)
if (year != "All" || year != null) {
println "grades"
grades {
idEq year
}
}
if (county != "All" || county != null) {
println "county"
scholarshipCounties {
eq('county.id', county)
}
}
if (major != "All" || major != null) {
println "major"
majors {
idEq major
}
}
if (activity != "All" || activity != null) {
println "activity"
activities {
idEq activity
}
}
eq('specialTypeInd', special)
eq('activeInd', "A")
order("name", "asc")
}
年,县,专业,activity都是"All"我现在考的时候。我也已经确定它们是字符串而不是其他东西。显然它打印出成绩、县等,而它甚至不应该进入那些 if 语句。那么问题是什么?谢谢
您的布尔逻辑看起来有问题 - 像
这样的测试if (year != "All" || year != null)
对于 year
的 任何 值, 将 总是 计算为 true
- 如果 year
为空则它不是 "All" 反之亦然。如果你想让方块触发除 "All" 之外的任何非空 year
值,那么它需要是 &&
而不是 ||
.