Java 如何克隆Wicket组件并保留它';s配置,但正在更改它';身份证
我最近开始在一个协作java项目中与ApacheWicket合作,该项目已经使用Wicket一段时间了。我目前有以下问题: 我有一种方法,可以接收组件列表,由于一些项目要求,我不能更改它们的源生成器Java 如何克隆Wicket组件并保留它';s配置,但正在更改它';身份证,java,components,wicket,Java,Components,Wicket,我最近开始在一个协作java项目中与ApacheWicket合作,该项目已经使用Wicket一段时间了。我目前有以下问题: 我有一种方法,可以接收组件列表,由于一些项目要求,我不能更改它们的源生成器 private List<Component> createNewComponents(List<Component> components) { // create new list of components with different IDs and some oth
private List<Component> createNewComponents(List<Component> components) {
// create new list of components with different IDs and some other logic
}
private List createNewcomComponents(列出组件){
//创建具有不同ID和一些其他逻辑的组件的新列表
}
我需要克隆收到的每个组件以创建一组新的组件,但ID不同。我知道我不能更改组件的ID,这就是为什么我试图以某种方式克隆或复制组件参数,尽管我还没有成功
有人知道这是否可能吗?如果是这样,实现这一目标的最佳方式是什么
非常感谢您的时间。您可以通过以下方式获得组件的模型和行为:
您可以通过获取的组件类,以便您可以尝试使用这些东西创建具有不同id的新组件。但我认为这是一个非常糟糕的设计 没有官方支持的方法可以做到这一点。您可以使用反射进行设置,但如果您不知道如何进行设置,请不要:) 但是,您可以使用
RepeatingView
添加未知组件:
add(new RepeatingView("unknownComponents")
.add(new Label("foo", "Foo"))
.add(new Label("bar", "Bar")));
<div wicket:id="unknownComponents"></div>
add(新的RepeatingView(“未知组件”)
添加(新标签(“foo”、“foo”))
.添加(新标签(“酒吧”、“酒吧”));
产生
<div id="foo1">Foo</div><div id="bar2">Bar</div>
FooBar
只要添加到
RepeatingView
的组件具有不同的ID,并且所有组件都使用相同的HTML标记,它就可以工作。但是我认为您可以使用多个repeatingview
来克服这些限制。您好。我决定创建一个可关闭的面板,并将需要接收的任何面板设置为该面板的扩展。clone()方法使用visitChildren()和自定义IVisitor,以及每个面板组件(getModel和getBehaviors)引用的方法。我能够想出一个有效的方法,但最终我们不得不完全改变应用程序逻辑。无论如何,谢谢你的帮助。