应该从IDataProvider.model()返回什么模型

时间:2013-05-07 08:14:26

标签: wicket

鉴于IDataProvider

public interface IDataProvider<T> extends IDetachable {

    IModel<T> model(T object);
}

我应该在这里返回什么型号?在javadoc中有写:

  

此数据提供程序的使用者使用回调来将从#iterator(int,int}检索的对象与模型(通常是可拆卸的)包装起来。

假设我有一个LoadableDetachableModel,它可以加载数据库中的对象列表。此模型是dataProvider的输入。为什么我要将每个对象再次包装在可拆卸模型中?

2 个答案:

答案 0 :(得分:1)

对于不可序列化的对象,它应该是LDM - 因此可以在后续请求中重新加载它们。对于可序列化的对象,如果您不介意将对象存储在会话中,则可以使用普通的Model&lt; T&gt ;.

您提供的模型将可用于已填充的行,因此当您在行上下文中工作时,例如一些标签的AJAX更新,你只需在渲染阶段从db而不是整个列表中加载单个对象。

我通常的做法是直接加载实体并在它们上面提供迭代器而不将它们包装在模型中。然后我在#model()中为实体提供包装LDM。

答案 1 :(得分:0)

你说过LDM是数据提供者的输入。在你的案例中哪个对象处理分页?

我们经常直接调用我们的服务来检索大小和对象。我们按预期使用该模型。加载1个单个对象。