IModel Apache Wicket在哪里检索对象?

时间:2011-11-17 10:38:17

标签: wicket

首先,请看一下在这个例子中如何使用IModel:

@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用于此应用程序。

1 个答案:

答案 0 :(得分:2)

使用您提供给DataTable的IDataProvider创建模型(DataTable构造函数也将使用您的IColumn列表)。 IDataProvider可以使用Hibernate - 很难说没有关于该实现的更多信息。