2010-09-04 33 views
1

有人知道如何在Wicket中動態添加鏈接地址?Wicket:如何在運行時添加鏈接地址

+0

最遠的T在Wicket中彈奏非常動態。我想也許我們需要更多的背景。在想要添加內容的位置顯示一些代碼,並提供一些想要添加的內容的信息。 – 2010-09-04 02:43:35

回答

3

ExternalLink需要提供鏈接URL的模型參數。這個模型幾乎可以做任何事情。這裏有一個生成隨機鏈接(LoadableDetachableModel是一個方便的實現動態模型):

IModel<String> model=new LoadableDetachableModel<String>() { 
    private static final long serialVersionUID = 1L; 
    @Override 
    protected String load() { 
     // this class does not really exist 
     return LinkRandomizer.getNewRandomUrl(); 
    } 
}; 
add(new ExternalLink("link", model)); 

參見:


事實證明,OP需要ListViewExternalLink s。

這裏是一個鏈接列表面板:

public class FooPanel extends Panel { 

    private static final long serialVersionUID = 1L; 

    public static class LinkBean{ 
     private String link; 
     private String label; 
     public LinkBean(final String link, final String label) { 
      this.link = link; 
      this.label = label; 
     } 
     public String getLabel() { 
      return this.label; 
     } 
     public String getLink() { 
      return this.link; 
     } 
     public void setLabel(final String label) { 
      this.label = label; 
     } 
     public void setLink(final String link) { 
      this.link = link; 
     } 


    } 

    public FooPanel(final String id) { 
     super(id); 
     this.add(new ListView<LinkBean>("item", 
       Arrays.asList(
        new LinkBean("http://www.google.com/","Google"), 
        new LinkBean("http://www.ebay.com/", "Ebay")) 
       ) { 

      private static final long serialVersionUID = 1L; 

      @Override 
      protected void populateItem(final ListItem<LinkBean> item) { 
       item.add(new ExternalLink("link", item.getModelObject().getLink()) 
        .add(new Label("label",item.getModelObject().getLabel())) 
       ); 

      } 
     }); 
    } 
} 

這裏是相關的HTML:

<html><head></head><body> 
<wicket:panel> 
    <div class="linkItem" wicket:id="item"> 
     <a href="" wicket:id="link" > 
      <wicket:container wicket:id="label" /> 
     </a> 
    </div> 
</wicket:panel> 
</body></html> 

輸出將是這樣的:

<div class="linkItem"><a href="http://www.google.com/">Google</a></div> 
<div class="linkItem"><a href="http://www.ebay.com/">Ebay</a></div> 

+0

我需要在運行時在ListView中添加ExternalLink。你的代碼是有用的,但我仍然不知道該怎麼做... – sonjafon 2010-09-07 00:11:18

+1

好吧,看看我的更新 – 2010-09-07 05:08:57

+0

非常感謝。這段代碼解決了我的問題。 – sonjafon 2010-09-08 00:30:37

相關問題