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 值,那么它需要是 && 而不是 ||.