0
首先,請看看IModel是如何在這個例子中使用:IModel Apache Wicket在哪裏檢索對象?
@SuppressWarnings("serial")
public static List<IColumn> getTableColumns(
final ReportParams reportParams, final boolean columnsSortable
) {
List<IColumn> columns = new ArrayList<IColumn>();
final Map<String,ToolInfo> eventIdToolMap = Locator.getFacade().getEventRegistryService().getEventIdToolMap();
// site
if(Locator.getFacade().getReportManager().isReportColumnAvailable(reportParams, StatsManager.T_SITE)) {
columns.add(new PropertyColumn(new ResourceModel("th_site"), columnsSortable ? ReportsDataProvider.COL_SITE : null, ReportsDataProvider.COL_SITE) {
@Override
public void populateItem(Item item, String componentId, IModel model) {
final String site = ((Stat) model.getObject()).getSiteId();
String lbl = "", href = "";
Site s = null;
try{
s = Locator.getFacade().getSiteService().getSite(site);
lbl = s.getTitle();
href = s.getUrl();
}catch(IdUnusedException e){
lbl = (String) new ResourceModel("site_unknown").getObject();
href = null;
}
item.add(new ImageWithLink(componentId, null, href, lbl, "_parent"));
}
});
}
而且我的問題是:
如何populateItem獲得IModel參數的輸入?
我在這個應用程序中找不到任何代碼,它顯式地構造了IModel對象。我認爲直接從數據庫的表中檢索對象是否正確?我在想這個,因爲映射Hibernate用於這個應用程序。
是的我剛剛找到了一個實現IDataProvider的類,但是有一種簡單的方法來確定IDataProvider是否依賴於數據庫? – Best
檢查IDataProvider的_Iterator extends T>迭代器(int first,int count)_實現。 –