2017-06-05 14 views
0

我想創建一個表格,其中包含一列鏈接,每個鏈接將打開它所表示的各個對象的頁面。 例如,該列將顯示發票的編號,這是一個鏈接。當我們點擊其中一個鏈接時,會打開一個頁面,顯示該發票的詳細信息。 我試圖做這樣的: 我創建了一個類GuidLinkPanel.java,在那裏我把ajaxLink要做一個可排序的欄中不同鏈接

import org.apache.wicket.AttributeModifier; 
import org.apache.wicket.ajax.AjaxRequestTarget; 
import org.apache.wicket.ajax.markup.html.AjaxLink; 
import org.apache.wicket.markup.html.basic.Label; 
import org.apache.wicket.markup.html.panel.Panel; 
import org.apache.wicket.model.IModel; 
import org.apache.wicket.model.Model; 
import org.apache.wicket.request.mapper.parameter.PageParameters; 

import nl.riskco.liberobc.client.business.model.InvoiceDomain; 
import nl.riskco.liberobc.web.pages.details.DetailsPage; 

public class GuidLinkPanel extends Panel { 

    public GuidLinkPanel(final String id, IModel<InvoiceDomain> invoice) 
    { 
     super(id); 

     add(new AjaxLink<Void>("guid"){ 

      private static final long serialVersionUID = 1L; 

     @Override 
     public void onClick(AjaxRequestTarget target) { 
      PageParameters params = new PageParameters(); 
      params.add("invoiceId", invoice.getObject().getInvoiceGUID()); 
      setResponsePage(DetailsPage.class, params); 
      } 
     }); 
    }  
} 

其標記

<wicket:panel> 
    <wicket:message key="invoice-header">[invoice-header]</wicket:message> 
    <a href="#" wicket:id="guid"></a> 
</wicket:panel> 

現在所在班級的摘錄該表創建,我也想此列可排序,所以我這樣做:

columns.add(new PropertyColumn<InvoiceDomain, String>(new 
StringResourceModel("invoice-id-label", this, null), "invoiceGUID", 
"invoiceGUID")); 

columns.add(new AbstractColumn<InvoiceDomain,String>(new Model<>("Invoice ID"),"invoiceGUID"){ 
     private static final long serialVersionUID = 1L; 

     @Override 
     public void populateItem(Item<ICellPopulator<InvoiceDomain>> item, String componentId, IModel<InvoiceDomain> rowmodel) 
      { 
       item.add(new GuidLinkPanel(componentId, rowmodel)); 
      } 
     }); 

的標記

<wicket:panel> 
    <div class="panel panel-default"> 
    <div class="panel-body"> 
     <div class="table"> 
     <table wicket:id="invoices-table" class="table table-striped" 
</table> 
     </div> 
    </div> 
</div> 
</wicket:panel> 

其結果是:

的列被添加,但在每行中的字符串

[GuidLinkPanel [組件ID =細胞]]]

,它是不是一個鏈接。 有沒有人有建議如何做到這一點?

+0

https://cwiki.apache.org/confluence/display/WICKET/Simple+Sortable+DataTable+示例 – soorapadman

+0

我的問題不是讓它們可排序,我的問題是我想查看錶中顯示的發票GUID並作爲一個鏈接,但是我得到[GuidLinkPanel [Component id = cell]]]。 感謝您的幫助。 –

回答

0

您的AjaxLink沒有文本子元素,例如, <a ...>Some Text to click</a>

您可以執行:

  • ajaxLink.setBody(Model.of(invoice.getObject()getInvoiceGUID()))
  • 或ajaxLink.add(新標籤( 「LinkLabel的」,發票.getObject()getInvoiceGUID()),但在這裏,你將不得不增加一個HTML元素太:。<a wicket:id="guid><wicket:container wicket:id="linkLabel"/></a>
相關問題