Подтвердить что ты не робот

Разница между??, has_content, if_exists в freemarker

В чем разница между следующим в freemarker?

!
has_content
?? 
if_exists

Я использовал?? вместо has_content, и это приводит к таким огромным проблемам. Поднял мой день. Мне действительно нужно выяснить это.

Когда я использовал

!(xyz.abc!)?? -- it dint work

Когда я использовал

!(xyz.abc!)?has_content ... it did work 

Не?? ИЛИ has_content ИЛИ if_exists проверяют одно и то же?

4b9b3361

Ответ 1

?? указывает, отсутствует ли значение операнда левой руки (это означает, что это Java null или у вас есть переменная undefined) и возвращает false (отсутствует) или true (не пропущено) соответственно.

?has_content очень похож на ??, за исключением того, что он также возвращает false для пустой строки или пустого списка или пустой карты. (Он не возвращает false для a 0, boolean false и т.д.)

! используется для указания значения по умолчанию, когда отсутствует значение, например color!"no color". Если вы опускаете правый операнд !, то по умолчанию это пустая строка и пустая последовательность и пустой хэш в одно и то же время.

?if_exists - это старый способ записи ??. Не используйте его.