我正在学习Wicket,想知道PropertyModel如何动态检索其数据。

我知道,为了使Model动态,我们必须重写getObject方法。有人可以解释PropertyModel的内部运作方式吗?

最佳答案

PropertyModel通常通过调用对象上给定属性表达式的getter来获取其模型对象,例如new PropertyModel(object, "name")将尝试评估object.getInnermostModelOrObject().getName()

但是,您可以传递一个特定的方法名称,例如:new PropertyModel(object, "calculateName()"),它将得出object.getInnermostModelOrObject().calculateName()

如果将IModel传递为PropertyModel的支持对象,则将返回模型对象的属性(请参见ChainingModel),从而为您提供动态模型对象。

您可以在此处查看表达语言:https://ci.apache.org/projects/wicket/apidocs/7.x/org/apache/wicket/core/util/lang/PropertyResolver.html

10-08 16:11