java - Wicket:从包含 Panel 到引用模型的组件

标签 java wicket

为了说明我的问题,假设我有一个 Thing 实例,它有两个文本属性 - 'foo' 和 'bar'。

我想创建一个面板来编辑事物的实例。该面板有两个 TextField 组件,一个用于“foo”属性,一个用于“bar”属性。

我希望能够调用 setDefaultModel()在我的面板上有一个 IModel<Thing> 的实例并让 TextField 组件引用此模型。如何最好地实现这一目标?

我应该覆盖 Panel.setDefaultModel() 吗?在两个 TextField 组件上也调用 setModel() 的方法?或者为 TextField 组件创建匿名 ReadOnlyModels,覆盖 getObject()从包含面板的模型中检索对象的方法?

我觉得这两个都不是很优雅,所以我想知道是否有更好的方法?

最佳答案

您可以使用 PropertyModel对于文本字段。通过 IModel<Thing>进入 PropertyModel 的构造函数与 foo作为属性名称:

add(new TextField("fooFieldId", new PropertyModel(thingModel, "foo")));

PropertyModel会发现 thingModel 是一个 Model并调用getObject().getFoo()等等

这假设 IModel<Thing>实例不会改变,只有它的底层对象可以通过调用 setDefaultModelObject 来改变。 .

关于java - Wicket:从包含 Panel 到引用模型的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8822475/

相关文章:

java - 类之间的函数调用

java - 如何在 JFreeChart 中将时间以这种格式 00 :00:00. 000 分配给 X 轴

java - 使 Label Wicket 不可见

java - 如何在 JSP 中清洁打印 Collections 对象

java - 数据表中生成的标记

java - 写一个简单的程序来使用堆栈

java - C 中 %04X 的含义以及如何在 java 中编写相同的内容

java - 使用 Java 套接字和 DataStreams 进行文件传输的问题

java - 如何在几秒钟内自动从一个页面重定向到另一页面

java - 如何在 wicket 应用程序中使用 tomcat 管理器中的 "Guessed User name"?