我想创建一个表,带有一列链接,每个链接将打开它所代表的相应对象的页面。
例如,该列将显示发票编号,这是一个链接。当我们点击其中一个链接时,会打开一个页面,显示该发票的详细信息。
我试着这样做:
我创建了一个班级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 [Component id = cell]]]
并且它不是链接。 有没有人有建议怎么做?
答案 0 :(得分:0)
您的AjaxLink没有文本子元素,例如<a ...>Some Text to click</a>
。
你可以这样做:
<a wicket:id="guid><wicket:container wicket:id="linkLabel"/></a>