pageProperty и встроенное условие IF - PullRequest
4 голосов
/ 12 января 2012

Я использую функцию pageProperty для управления некоторыми из моих меню, которые находятся в моем макете. Мне нужно применять конкретные классы к ссылкам в зависимости от того, какой meta.nav pageProperty возвращает. Прямо сейчас это выглядит так ...

<g:if test="${pageProperty(name:'meta.nav') == 'support'}">
  <g:link class="selected" ...>support</g:link>
</g:if>
<g:else>
  <g:link ...>support</g:link>
</g:else>

Я бы хотел это убрать, однако, это не работает

<g:link class="${pageProperty(name:'meta.nav') == 'support' ? selected : null}" ...>support</g:if>

Я пробовал несколько разных вариантов парантеза, и, похоже, ни один из них не получил того, что мне нужно. Например:

${(pageProperty(name:'meta.nav') == 'support') ? selected : null}
${(pageProperty(name:'meta.nav') == 'support' ? selected : null)}

Просто не могу заставить его действовать правильно. Любая помощь приветствуется.

Ответы [ 2 ]

3 голосов
/ 12 января 2012

Как дикий удар в темноте, как насчет:

${ pageProperty(name:'meta.nav').equals( 'support' ) ? 'selected' : null }

Не так круто, но может быть менее запутанным для анализатора (похоже, что-то где-то запутывается и выдает == support изгде не должно)

1 голос
/ 12 января 2012

Я бы попытался сделать истинное условие строкой:

${(pageProperty(name:'meta.nav') == 'support') ? 'selected' : null}

Возможно, он пытается получить доступ к переменной с именем selected в скрипте GSP, которая будет неопределенной.

Надеюсь, это поможет.

...