2013-10-16 3 views
0

grails에는 메뉴가 있습니다. 활성 페이지의 메뉴 항목을 강조 표시하려고합니다.grails 현재 페이지 하이라이트

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

나는 작동하는 코드가 있지만 더 좋은 방법이있는 것처럼 보입니다.

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" class="<xyz:active check='${['contactInfo']}'/>">Contact Info</a></li> 
<li><a href="${createLink(action: 'aboutYouFamily')}" title="About You" class="<xyz:active check='${['aboutYouFamily', 'aboutYouBackground', 'aboutYouCharacteristics', 'aboutYouLifestyle', 'aboutYouApplicant2']}'/>">About You</a></li> 

이 불면 :

<g:link action='myProfile' class="${<xyz:active check='${['myControllerAction']}'/>}">My Profile</g:link> 

난 당신이 전달할 수 있습니다 생각하지 않는다 g에 대한 매개 변수 인 taglib : link

나는 여러 GSPS가/행동이 링크가 있기 때문에 그들이 이름을 지정하는 방법의 활성화에 원인이 요구 사항이 있습니다

About You 

내가 할 수있는 :

aboutYouLocation 
aboutYouBackground 
aboutYouEducation 

모든이 링크 활성 하나를 만들 부분적으로 일치 시키지만, 배열 (taglib)에 전달되는 배열을 사용하게되는 aboutYour (추가 R)로 시작하는 몇 가지 액션/gsp도 있습니다.

+0

[탐색 모음에서 선택한 항목의 클래스 속성을 변경하는 방법] 가능한 복제본 (http://stackoverflow.com/questions/14146950/how-to-change-the-class-attribute-of-a -selected-item-in-the-navigation-bar) – Gregg

답변

2

Platform Core plugin으로이를 수행하는 표준 방법이 있습니다. 그것은 당신에게 Navigation API 제공합니다 :

관례에 따라 grails-app/conf/AppNavigation.groovy을

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

* Grails에 - 응용 프로그램/당신의 레이아웃에서 사용할 수있는/_menu.gsp * (템플릿보기 또는 GSP의)

<nav:menu scope="app" id="navigation" /> 

당신은 또한 custom item rendering을 확인, 메뉴에 대해 생성 된 HTML을 사용자 정의 할 수 있습니다.

+0

훌륭한 플러그인입니다. 나는 그 사실을 더 일찍 알았 으면 좋겠다. 그것은 내 코드를 많이 청소했습니다. – spock99

+0

그래, 정말 좋은 플러그인 :-) 나는 더 많은 grails 플러그인/응용 프로그램이 그것을 사용해야한다고 생각한다. –