2014-12-30 4 views
1

현재 탐색 링크를 강조 표시해야하지만 원하는 결과를 얻을 수없는 동적 탐색 링크를 만들려고합니다. 내 메뉴 항목을 표시하는 데 listview를 사용하고 있지만 현재 페이지 링크를 강조 표시 할 수 없습니다.개찰구에서 현재 페이지를 얻는 방법

제안하십시오 필요한 사항을 변경

public class SearchPage extends WebPage implements Serializable { 

private static final long serialVersionUID = 1L; 
Logger log = Logger.getLogger(SearchPage.class); 
public SearchPage() { 

    List<HeaderListItems> headerPOJOItems = new ArrayList<HeaderListItems>(); 
    HeaderListItems searchHLI = new HeaderListItems(); 

    searchHLI.setLabel("Search"); 
    searchHLI.setDestPage(SearchPage.class); 
    headerPOJOItems.add(searchHLI); 

    HeaderListItems jobsHLI = new HeaderListItems(); 

    jobsHLI.setLabel("Jobs"); 
    jobsHLI.setDestPage(Jobs.class); 
    headerPOJOItems.add(jobsHLI); 

    HeaderListItems urlHLI = new HeaderListItems(); 

    urlHLI.setLabel("URL"); 
    urlHLI.setDestPage(URL.class); 
    headerPOJOItems.add(urlHLI); 

    HeaderListItems syssettingsHLI = new HeaderListItems(); 

    syssettingsHLI.setLabel("System Settings"); 
    syssettingsHLI.setDestPage(Settings.class); 
    headerPOJOItems.add(syssettingsHLI); 

    HeaderListItems usersHLI = new HeaderListItems(); 

    usersHLI.setLabel("Users"); 
    usersHLI.setDestPage(User.class); 
    headerPOJOItems.add(usersHLI); 

    HeaderListItems logoutHLI = new HeaderListItems(); 

    logoutHLI.setLabel("Logout"); 
    logoutHLI.setDestPage(WebApp.get().getHomePage()); 
    headerPOJOItems.add(logoutHLI); 

    add(new ListView("headerlistview", headerPOJOItems) { 

     @Override 
     protected void populateItem(ListItem item) { 
      final HeaderListItems headerlistitems = (HeaderListItems) item 
        .getModelObject(); 
      log.info("Label: " + headerlistitems.getLabel() + " dest: " 
        + headerlistitems.getDestPage()); 
      Link newlink = new Link("newlink") { 

       @Override 
       public void onClick() { 

        setResponsePage(headerlistitems.getDestPage()); 

       } 

      }; 
      newlink.add(new Label("newlabel", headerlistitems.getLabel())); 
      newlink.add(new AttributeModifier("class", 
        new AbstractReadOnlyModel() { 

         @Override 
         public Object getObject() { 
          // TODO Auto-generated method stub 
          return getPage().getClass().equals(
            headerlistitems.getDestPage() 
              .getClass()) ? "activeitem" 
            : AttributeModifier.VALUELESS_ATTRIBUTE_REMOVE; 
         } 
        })); 
      item.add(newlink); 

     } 


    }); 
} 

목록 POJO 항목의 목록입니다. 내 POJO는 두 개의 필드 라벨 (문자열)와 destPage (클래스)가

내 마크 업 : 내가 속성 수정에 미리

감사를 사용하고 CSS 클래스의 activeitem이

<html xmlns:wicket="http://wicket.apache.org"> 
<head> 
<title>Search Page</title> 
<link href="css/design.css" type="text/css" rel="stylesheet" /> 
</head> 
<body> 
    <div id="container"> 
     <div class="header"> 
      <div class="header_tab1"> 
       <p align="center">Logo</p> 
      </div> 
      <div class="header_tab2">&nbsp;</div> 
      <div class="header_tab3"> 
       <table width="100%"> 
        <tr> 
         <td wicket:id="headerlistview"> 
          <ul> 
           <li><a href="#" wicket:id="newlink"><span 
             wicket:id="newlabel"></span></a></li> 
          </ul> 
         </td> 
        </tr> 
       </table> 
      </div> 
     </div> 

    </div> 



</body> 
</html> 

답변

1

변경 클래스 비교에 :

return getPage().getClass().equals(
    headerlistitems.getDestPage()) ? "activeitem" : AttributeModifier.VALUELESS_ATTRIBUTE_REMOVE; 

다음 단계 woul 자신의 패널에 탐색을 추출하여 페이지에서 다시 사용할 수 있습니다.

행운을 빈다.

관련 문제