【问题标题】:Wicket ListView not refreshingWicket ListView 不刷新
【发布时间】:2011-05-20 05:14:01
【问题描述】:

我在使用 Apache Wicket 迈出第一步时遇到了以下问题。我有一个ListView,它在其条目旁边显示一个“删除”链接。单击删除链接时,列表项表示的实体将从数据库中删除,但列表本身不会更新,直到我在浏览器中手动重新加载页面。

IModel<List<SampleEntity>> sampleEntityListModel = new LoadableDetachableModel<List<SampleEntity>>() {
        @Override
        protected List<SampleEntity> load() {
            return mSampleEntityBA.findAll();
        }
    };

mListview = new ListView<SampleEntity>("listview", sampleEntityListModel) {
        @Override
        protected void populateItem(final ListItem<SampleEntity> item) {
            item.add(new Label("listlabel", new PropertyModel<String>(item.getModelObject(),
                    "text")));
            item.add(new Link<SampleEntity>("deleteLink", item.getModel()) {
                @Override
                public void onClick() {
                    mSampleEntityBA.delete(item.getModelObject());
                }
            });
        }
};

【问题讨论】:

    标签: java wicket


    【解决方案1】:

    当 onClick 被调用时,item.getModelObject() 从 sampleEntityListModel 中拉取,然后调用 mSampleEntityBA.findAll()。 sampleEntityListModel 的模型对象将在请求周期内被缓存(直到它被分离——这通常是你想要的)并且不知道对 delete() 的调用。

    为了刷新 sampleEntityListModel,在删除之后添加一个 sampleEntityListModel.detach() 调用(sampleEntityListModel 必须是最终的,但这不会导致任何额外的状态被序列化)。这将导致模型在请求周期后期呈现列表视图时获取一组新数据。

    【讨论】:

      【解决方案2】:

      您可能想要一个 AjaxLink 而不是那个链接,然后您必须使用 here 描述的策略刷新列表,可能会针对 wiki 使用 Wicket 1.3 代码而不是 1.4 的事实进行一些调整。

      但您也可能最好使用不同的转发器,例如 RefreshingView 或 DataView。有一些各种中继器的例子here。虽然它们都不是您正在寻找的东西,但查看该代码可能会有所帮助。

      【讨论】:

        【解决方案3】:

        看起来问题在于您的 mSampleEntityBA.findAll();正在返回不正确的数据。没有看到更多代码很难提供帮助。

        另一方面,在处理数据库支持的列表时,您确实应该使用 DataView。

        【讨论】:

          【解决方案4】:

          您可能还想从 wiQuery 项目而不是 DataView 中检出 JQGrid。

          【讨论】:

            猜你喜欢
            • 2011-11-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-12-03
            相关资源
            最近更新 更多