Grails текущая страница

В grails у меня есть меню. Я пытаюсь выделить пункт меню для активной страницы:

link1
link2 (show as bold if the controller action partially matches this gsp name)
link3

У меня есть рабочий код, но похоже, что будет лучший способ.

Taglib отлично работает:

def active = { attrs, body ->
 for (page in attrs.check) {
 if (params.action.startsWith(page)) {
 out << "current"
 break
 }
 }
}

Этот вариант работает отлично, но кажется многословным:

<li><a href="${createLink(action: 'contactInfo')}" title="Contact Info" target="_blank">Contact Info</a></li>
<li><a href="${createLink(action: 'aboutYouFamily')}" title="About You" target="_blank">About You</a></li>

Это взрывается:

<g:link action="myProfile">My Profile</g:link>

Я не верю, что вы можете передать taglib в качестве параметра g: link

У меня также есть требование, чтобы несколько gsps/действий вызывали связь, поскольку они называются:

aboutYouLocation
aboutYouBackground
aboutYouEducation

все делают эту ссылку активной:

About You

Я могу выполнить частичное совпадение, но у меня также есть некоторые действия /gsps, которые начинаются с aboutYour (extra R), что приводит к тому, что мой массив передается в мой taglib.

1 ответ

Там стандартный способ сделать это с плагином платформы Core. Он предоставит вам API-интерфейс навигации:

Grails-приложение /CONF/AppNavigation.groovy

navigation = {
 // Declare the "app" scope, used by default in tags
 app {
 contact(action: 'contactInfo')
 about(action: 'aboutYouFamily')
 }
}

* grails-app/view/_menu.gsp * (шаблон, который вы можете использовать в своем макете или в GSP)

Вы также можете настроить html, сгенерированный для вашего меню, проверить рендеринг настраиваемого элемента.

licensed under cc by-sa 3.0 with attribution.