是否可以在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")
}
当我正在测试时,年份,县,专业和活动都是“全部”。我也确定他们是Strings而不是其他东西。显然,当它甚至不能进入那些if语句时,它会打印出成绩,县等。那么问题是什么?感谢
答案 0 :(得分:1)
您的布尔逻辑看起来很糟糕 - 像
这样的测试if (year != "All" || year != null)
将始终评估为true
year
的任何值 - 如果year
为空,那么它不是&# 34;所有"反之亦然。如果您希望块触发任何非空year
值,除了" All"然后它必须是&&
而不是||
。