Тест Grails GSP оценивается как ложный, но блок все еще отображается. Зачем? - PullRequest
3 голосов
/ 12 мая 2010

Я сбит с толку оператором Grails.

Это выражение:

<g:if test="${!(preferences.displayOption.equals('ANA') || preferences.displayOption.equals('FLOP'))} ">
  ${!(preferences.displayOption.equals('ANA') || preferences.displayOption.equals('FLOP'))}
</g:if>

отпечатков

false

Как это может быть? Я печатаю точно такое же условие, которое проверяю!

, хотя я уверен, что условие теста оценивается как «ложное», потому что оно выводит false в следующей строке, операторы внутри g: if воспроизводятся.

Идеи Ану о том, что происходит.

Ответы [ 2 ]

6 голосов
/ 12 мая 2010

Я думаю, что проблема в том, что в вашем тесте есть пробел после финала. Строка «false» оценивается как true, тогда как «false» будет соответствующим образом интерпретироваться как false тегом if.

1 голос
/ 12 мая 2010

Попробуйте удалить лишний пробел после закрытия} в атрибуте test. Вы можете просмотреть сгенерированный groovy источник, добавив «? ShowSource = true» к URL в режиме разработки. Дополнительный пробел заставляет его создать строку «false», которая оценивается как true.

...