gpt4 book ai didi

java - Wicket:在一个组件中使用两次CompoundPropertyModel 的属性

转载 作者:行者123 更新时间:2023-12-01 23:25:44 25 4
gpt4 key购买 nike

我有一个POJO(当然这是一个简化的例子)

import java.io.Serializable;

public class Pojo implements Serializable {
private static final long serialVersionUID = 1L;

private String property;

public String getProperty() {
return property;
}

public void setProperty(String property) {
this.property = property;
}
}

我想在组件中使用两次,如下所示:

public class PojoPanel extends GenericPanel<Pojo> {
private static final long serialVersionUID = 1L;

public PojoPanel(String id) {
super(id);
add(new Label("property"));
add(new MultiLineLabel("property"));
}

}

带有一些标记:

<?xml version="1.0" encoding="UTF-8" ?>
<wicket:panel xmlns:wicket="http://wicket.apache.org">
<span wicket:id="property"></span><div wicket:id="property"></div>
</wicket:panel>

父组件有一个CompoundPropertyModel模型,因此“property” ID将确保使用Pojo的property

本类(class)会出现问题;但我想知道除了为 MultiLineLabel 提供不同的标记 id 和模型之外,是否有一个不错的快捷方式。

最佳答案

ComponentId 在组件层次结构中的同一级别上确实必须是唯一的。这意味着您不能使用具有相同 id 的两个组件,但您想这样做,因为属性是由复合模型类型解析的。

解决示例的最简单方法是

public class PojoPanel extends GenericPanel<Pojo> {
private static final long serialVersionUID = 1L;

public PojoPanel(String id) {
super(id);
add(new Label("property"));
}

protected void onInitialize() {
super.onInitialize();
add(new MultiLineLabel("Xproperty", new PropertyModel(getDefaultModel(), "property")));
}

}

带有关联的标记

<?xml version="1.0" encoding="UTF-8" ?>
<wicket:panel xmlns:wicket="http://wicket.apache.org">
<span wicket:id="property"></span><div wicket:id="Xproperty"></div>
</wicket:panel>

关于java - Wicket:在一个组件中使用两次CompoundPropertyModel 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20033166/

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