我最近开始在一个协作java项目中使用Apache Wicket,该项目已经使用Wicket一段时间了。我目前有以下问题:
我有一个接收组件列表的方法,由于一些项目要求,我不能更改它们的源代码生成器。
private List<Component> createNewComponents(List<Component> components) {
// create new list of components with different IDs and some other logic
}我需要克隆我收到的每个组件,以创建一组新的组件,但具有不同的ID。我知道我不能更改组件的ID,这就是为什么我试图以某种方式克隆或复制组件参数,尽管我还没有成功。
有没有人知道这是否可能?如果是这样的话,实现这一目标的最佳方式是什么?
非常感谢您的宝贵时间。
发布于 2014-05-10 02:17:47
您可以通过以下方式获取模型和组件的行为:
getModel()
getBehaviors()
你可以通过getClass()获得的组件的类,所以你可以尝试用这些东西来创建具有不同id的新组件。但是,这是一个非常糟糕的设计。
发布于 2014-05-10 02:48:50
没有官方的、受支持的方法可以做到这一点。你可以使用反射来设置它,但是如果你不知道该怎么做,那就不要这样做:)
但是,您可以使用RepeatingView添加未知组件:
add(new RepeatingView("unknownComponents")
.add(new Label("foo", "Foo"))
.add(new Label("bar", "Bar")));
<div wicket:id="unknownComponents"></div>生成
<div id="foo1">Foo</div><div id="bar2">Bar</div>只要您添加到RepeatingView的组件具有不同的It,并且所有组件都使用相同的HTML标记,它就可以工作。但是我认为你可以使用多个RepeatingViews来解决这个限制。
https://stackoverflow.com/questions/23569447
复制相似问题