2015-02-17 3 views
0

Можно ли использовать операторы If внутри блока withCriteria? Я пытаюсь сделать следующее:Grails withCriteria Если заявления?

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. Так в чем проблема? Благодаря

ответ

1

Ваш Булева логика выглядит неисправны - тест, как

if (year != "All" || year != null) 

воли всегда оценки в true для любого значение year - если year равно нулю, то это не «все» и наоборот , Если вы хотите, чтобы блок срабатывал для любого ненулевого значения year, кроме «Все», тогда он должен быть && вместо ||.

+0

Это объясняет, где моя ошибка с моим мышлением была. –

Смежные вопросы