【问题标题】:Grails withCriteria If Statements?Grails with Criteria If 语句?
【发布时间】:2015-02-17 15:57:45
【问题描述】:

是否可以在 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")
}

当我目前正在测试时,年份、县、专业和活动都是“全部”。我也已经确定它们是字符串而不是其他东西。显然,当它甚至不应该进入那些 if 语句时,它正在打印出成绩、县等。那么问题是什么?谢谢

【问题讨论】:

    标签: grails groovy grails-orm


    【解决方案1】:

    您的布尔逻辑看起来有问题 - 类似的测试

    if (year != "All" || year != null)
    
    对于year任何 值,

    始终评估为true - 如果year 为空,则它不是“全部”,反之亦然。如果您希望块为除“All”之外的任何非空 year 值触发,则它需要是 && 而不是 ||

    【讨论】:

    • 这解释了我的思维错误在哪里。
    猜你喜欢
    • 2011-05-14
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 2020-02-29
    • 2019-11-14
    • 2011-05-11
    相关资源
    最近更新 更多