2013-04-01 2 views
0

을 반복하는 것은 누구나 알고 있나요.아파치 슬링 루프는

//get the full path to the current page 
String home = Text.getAbsoluteParent(currentPage.getPath(), 2);  
int absParent = currentStyle.get("absParent", 1); 

//checks for invalid and hidden pages. 
PageFilter filter = new PageFilter(request); 

//utility class that provides an iterator over navigation elements 

Navigation nav = new Navigation(currentPage, absParent, filter, 1); 

for (Navigation.Element i: nav) { 
%><li <%= i.hasChildren() %>><a href="<%= i.getPath() %>.html"><%= i.getTitle() %></a>  <% 
      break; 
} 

그러나 for 루프 내에 switch 문을 추가하면 각 탐색 요소 중 하나를 표시해야합니다.

for (Navigation.Element i: nav) { 
    switch (i.getType()) { 
    case ITEM_BEGIN: 
      %><li <%= i.hasChildren() %>><a href="<%= i.getPath() %>.html"><%=  i.getTitle() %></a><% 
      break; 
    } 
} 

이것은 나를 미치게합니다. 어떤 도움이라도 대단히 감사합니다! 감사!

답변

3

이 코드 시도 할 수 있습니다 : 상자 인스턴스의 아웃

<% 
    Navigation navRoot = new Navigation(currentPage,2,new PageFilter(request),4); 
    for (Navigation.Element e: navRoot) { 
     switch (e.getType()) { 
      case NODE_OPEN: 
      %><ul><% 
       break; 
      case ITEM_BEGIN: 
       %><li ><a href="<%= e.getPath() %>.html"><%=  e.getTitle() %></a> <% 
       break; 
      case ITEM_END: 
      %></li><% 
       break; 
      case NODE_CLOSE: 
      %></ul><% 
       break; 
     } 
    } 

    %> 

샘플 구성 요소는 위치에 있습니다 : 그것은 단지에 대한 중복 코드처럼 보인다/응용 프로그램/geometrixx/구성 요소/topnav

0

나는 각 탐색 요소의 2에 대한 정확한 이유를 알지 못한다. 탐색을 그릴 때 그러나 "Navigation"에 CQ5 documentation

는 "A 탐색 요소가 페이지를 반영하고 다른 Navigation.Element.Types을 가질 수 있음을 주장한다. 같은 페이지가 다른 요소 유형에 대한 4 번 리턴 될 수 있습니다.이 최대한의 유연성을 제공 . "


아마도 동일한 요소 요소 유형 2 회 반환된다. switch-case 블록을 넣으면 특정 요소 유형을 선택하므로 한 번만 표시됩니다.


아마도 당신의 대답의 핵심은 Navigation.Element.Types에있다.

+0

감사 @anij switch 문을 추가하십시오. 최상위 페이지를 캡처하는 다른 방법이 있는지 알고 있습니까? 코드 샘플은 CQ5에 대한 완전한 신조에 도움이 될 것입니다. –

+0

@Delmon Young "Top Navigation"구성 요소를 만들려고하십니까? 그게 당신의 문제 진술인가요? 그렇다면 CQ5 설치와 함께 제공되는 기존 샘플 사이트의 코드를 볼 수 있습니다. 네비게이션 구성 요소가 있습니다. 나중에 코드를 게시하려고하지만 샘플을 확실히 확인할 수 있습니다. "crxde"에서/libs/foundation/components (경로가 있다고 생각합니다) 또는/apps/<샘플 사이트 이름>/구성 요소를 볼 수 있습니다. – AniJ

+0

덕분에 위의 코드가 CQ5 설치와 함께 제공되는 샘플 사이트의 수정이다 @anij. 나는 그들이 그들이하는 방식으로 기능하는 이유를 더 잘 이해하려고 노력했다. 매우 도움이 될 코드 예제가있는 경우. –