首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何克隆Wicket组件,保留其配置,但更改其ID

如何克隆Wicket组件,保留其配置,但更改其ID
EN

Stack Overflow用户
提问于 2014-05-10 00:17:19
回答 2查看 394关注 0票数 0

我最近开始在一个协作java项目中使用Apache Wicket,该项目已经使用Wicket一段时间了。我目前有以下问题:

我有一个接收组件列表的方法,由于一些项目要求,我不能更改它们的源代码生成器。

代码语言:javascript
复制
private List<Component> createNewComponents(List<Component> components) {
// create new list of components with different IDs and some other logic
}

我需要克隆我收到的每个组件,以创建一组新的组件,但具有不同的ID。我知道我不能更改组件的ID,这就是为什么我试图以某种方式克隆或复制组件参数,尽管我还没有成功。

有没有人知道这是否可能?如果是这样的话,实现这一目标的最佳方式是什么?

非常感谢您的宝贵时间。

EN

回答 2

Stack Overflow用户

发布于 2014-05-10 02:17:47

您可以通过以下方式获取模型和组件的行为:

getModel()

getBehaviors()

你可以通过getClass()获得的组件的类,所以你可以尝试用这些东西来创建具有不同id的新组件。但是,这是一个非常糟糕的设计。

票数 1
EN

Stack Overflow用户

发布于 2014-05-10 02:48:50

没有官方的、受支持的方法可以做到这一点。你可以使用反射来设置它,但是如果你不知道该怎么做,那就不要这样做:)

但是,您可以使用RepeatingView添加未知组件:

代码语言:javascript
复制
add(new RepeatingView("unknownComponents")
    .add(new Label("foo", "Foo"))
    .add(new Label("bar", "Bar")));

<div wicket:id="unknownComponents"></div>

生成

代码语言:javascript
复制
<div id="foo1">Foo</div><div id="bar2">Bar</div>

只要您添加到RepeatingView的组件具有不同的It,并且所有组件都使用相同的HTML标记,它就可以工作。但是我认为你可以使用多个RepeatingViews来解决这个限制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23569447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档