2015-02-11 2 views
0

Я написал функцию в моем классе обслуживания, где я оцениваю переданные параметры от контроллера, но Grails возвращает неверные результаты оценки.Неправильная оценка Grails выражения

def list(String q,String qval,String srt,String ord){ 
log.debug("q==="+q) 
log.debug("qval==="+qval) 
log.debug("srt==="+srt) 
log.debug("order==="+ord) 

все эти операторы отладки печатают нуль, как ожидалось. Теперь

boolean qvalbool=qval?.trim() 
log.debug("qvalbool===>>"+qvalbool) prints true!!! 

!StringUtils.isEmpty(q) && !StringUtils.isEmpty(qval) returns true!! 

оба утверждения должны возвращать false, пока они возвращают true, что происходит с этим? есть идеи?

Я использую Grails 2.4.2

+2

Возможно, ввод «null» как строка? поэтому вы видите нуль, когда вы их печатаете? – evanwong

+0

Входной сигнал равен null, но результат условия должен быть ложным, пока он показывает true –

+2

Запустите отладчик и проверьте, что такое точное значение. Как упоминалось в @evanwong, вы можете получить «null», а не «null», поэтому другие условия оцениваются как «истинные». Если вы хотите напечатать точный тип данных, попробуйте 'log.debug (q? .dump())' и посмотрите, получаете ли вы 'null' или' ' –

ответ

2

Evan Wong «s комментарий очень вероятно, правильно, что вы видите строку, содержащую слово нуль.

Часто, когда Groovy распечатывает значения, неясно, каков их тип.

groovy:000> null 
===> null 
groovy:000> 'null' 
===> null 

Кроме того, в Groovy выражение null + '' оценивает в строку 'null'.

Это был бы простой способ изменить значение этого параметра, чтобы он содержал строку «null».

+0

Спасибо, что это был Проблема: я добавлял '' к null, который оценивается как 'null'. –

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