IModel Apache Wicket 在哪里检索对象?

发布于 2024-12-16 11:53:48 字数 1587 浏览 0 评论 0原文

首先,请看一下本示例中如何使用 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。

First of all, please take a look at how IModel is used in this example:

@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"));
            }
        });
    }

And my questions are:

  • How does populateItem get an input for IModel parameter?

  • I cannot find any code in this application, which explicitly constructs IModel object. Is it correct for me to assume that the object is retrieved directly from a table in the database? I'm thinking of this because Mapping Hibernate is used for this application.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

べ繥欢鉨o。 2024-12-23 11:53:48

这些模型是使用您提供给 DataTable (DataTable 构造函数还将获取您的 IColumn 列表)。
IDataProvider 可以使用 Hibernate - 如果没有有关该实现的更多信息,很难说。

The models are created using the IDataProvider you provide to the DataTable (DataTable constructor will also take your IColumn List) .
The IDataProvider could use Hibernate - hard to say without having more information on that implementation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文