Java Wicket:在一个组件中使用CompoundPropertyModel的属性两次
我有一个POJO(当然这是一个简化的示例) 我想在组件中使用两次,如下所示:Java Wicket:在一个组件中使用CompoundPropertyModel的属性两次,java,wicket,Java,Wicket,我有一个POJO(当然这是一个简化的示例) 我想在组件中使用两次,如下所示: public class PojoPanel extends GenericPanel<Pojo> { private static final long serialVersionUID = 1L; public PojoPanel(String id) { super(id); add(new Label("property")); ad
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"));
}
}
公共类PojoPanel扩展了GenericPanel{
私有静态最终长serialVersionUID=1L;
公共PojoPanel(字符串id){
超级(id);
添加(新标签(“属性”);
添加(新的多行标签(“属性”));
}
}
带有一些标记:
<?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的属性
这门课会给你一些问题;但是我想知道除了给multillelabel
一个不同的标记id和一个模型之外,是否还有一个好的快捷方式 组件ID在组件层次结构的同一级别上必须是唯一的。这意味着您不能使用具有相同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")));
}
}
公共类PojoPanel扩展了GenericPanel{
私有静态最终长serialVersionUID=1L;
公共PojoPanel(字符串id){
超级(id);
添加(新标签(“属性”);
}
受保护的void onInitialize(){
super.onInitialize();
添加(新的多行标签(“Xproperty”,新的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>
在组件层次结构的同一级别上,组件ID必须是唯一的。这意味着您不能使用具有相同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")));
}
}
公共类PojoPanel扩展了GenericPanel{
私有静态最终长serialVersionUID=1L;
公共PojoPanel(字符串id){
超级(id);
添加(新标签(“属性”);
}
受保护的void onInitialize(){
super.onInitialize();
添加(新的多行标签(“Xproperty”,新的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>
在组件层次结构的同一级别上,组件ID必须是唯一的。这意味着您不能使用具有相同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")));
}
}
公共类PojoPanel扩展了GenericPanel{
私有静态最终长serialVersionUID=1L;
公共PojoPanel(字符串id){
超级(id);
添加(新标签(“属性”);
}
受保护的void onInitialize(){
super.onInitialize();
添加(新的多行标签(“Xproperty”,新的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>
在组件层次结构的同一级别上,组件ID必须是唯一的。这意味着您不能使用具有相同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")));
}
}
公共类PojoPanel扩展了GenericPanel{
私有静态最终长serialVersionUID=1L;
公共PojoPanel(字符串id){
超级(id);
添加(新标签(“属性”);
}
受保护的void onInitialize(){
super.onInitialize();
添加(新的多行标签(“Xproperty”,新的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>
是的,我自己也想到了这个解决方案——尽管我必须说,PropertyModel
看起来像是一个很好的捷径,可以让模型初始化保持惰性(如果这有意义的话)。是的,你在这件事上是绝对正确的。只是PropertyModel允许您调用构造函数,而不知道其父级的模型,这有时可能会有所帮助。祝你好运:-)是的,我自己也想到了这个解决方案-尽管我必须说PropertyModel
看起来像是一个让模型初始化保持惰性的好捷径(如果这有意义的话)。是的,你在这件事上是绝对正确的。只是PropertyModel允许您调用构造函数,而不知道其父级的模型,这有时可能会有所帮助。祝你好运:-)是的,我自己也想到了这个解决方案-尽管我必须说PropertyModel
看起来像是一个让模型初始化保持惰性的好捷径(如果这有意义的话)。是的,你在这件事上是绝对正确的。只是PropertyModel允许您调用构造函数,而不知道其父级的模型,这有时可能会有所帮助。祝你好运:-)是的,我自己也想到了这个解决方案-尽管我必须说PropertyModel
看起来像是一个让模型初始化保持惰性的好捷径(如果这有意义的话)。是的,你在这件事上是绝对正确的。只是PropertyModel允许您调用构造函数,而不知道其父级的模型,这有时可能会有所帮助。祝你好运:-)