gpt4 book ai didi

wicket - Wicket 中的 Model、PropertyModel 和 CompoundPropertyModel 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 06:35:57 25 4
gpt4 key购买 nike

我已经开始学习 Wicket 框架,我遇到了 wicket 模型,我阅读了有关 Model()、CompouneModel() 和 CompoundPropertyModel() 的信息,但我没有得到它们之间的实际区别。我在谷歌上搜索了这个,但我没有得到任何关于这个的信息。

这个link给出了 CompoundPropertyModel 和 PropertyModel 之间的描述,但仍然不清楚它们之间的区别。

只有我可以区分模型和其他两个的是模型不能与动态字段一起使用,而其他两个可以。

有人可以给出这些模型之间的区别吗?

最佳答案

都是接口(interface)的实现型号 .

类(class) 型号 是一个基本实现,几乎只是一个“数据持有者”,因此您可以在该模型中存储一个对象并获取。如果存储的对象是其他模型(IModel),该类的附加值是转发获取和设置模型对象。

类(class) 属性(property)型号 如果您想使用属性表达式获取/设置属性,这很有用。看一个例子:

class Data {

private Integer data;
private String name;

/* getters and setters */

}

如何使用 PropertyModel 获取和设置数据:
Data data = new Data();
data.setId(1);
data.setName("data entity");
IModel idModel = new PropertyModel(data, "id");
IModel nameModel = new PropertyModel(data, "name");

System.out.println(data.getId());
// prints '1'
System.out.println(idModel.getObject());
// prints '1'
System.out.println(data.getName);
// prints 'data entity'
System.out.println(nameModel.getObject());
// prints 'data entity'


data.setId(2);
nameModel.setObject("a new name");

System.out.println(data.getId());
// prints '2'
System.out.println(idModel.getObject());
// prints '2'
System.out.println(data.getName());
// prints 'a new name'
System.out.println(nameModel.getObject());
// prints 'a new name'

类(class) CompoundPropertyModel 如果您想通过组件的 ID 将属性传播到组件,这很有用。看一个例子(使用相同的数据类):

Java 代码(MyPanel.java):
class MyPanel extends Panel {

public MyPanel(IModel<Data> model) {
super(new CompoundPropertyModel<Data>(model));
add(new Label("id"));
add(new Label("data"));
}
}

标记(MyPanel.html):
<wicket:panel>
<span wicket:id="id">placeholer for id</span>
<span wicket:id="name">placeholer for id</span>
</wicket:panel>

使用 MyClass 的 Java 代码:
// in a Page, Panel or an other Component
Data data = new Data();
data.setId(3);
data.setName('my name');
add(new MyPanel(Model.of(data)));

渲染输出 HTML(通过面板):
<span>3</span>
<span>my name</span>

关于wicket - Wicket 中的 Model、PropertyModel 和 CompoundPropertyModel 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30210751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com