Wicket表单,包含所有可用值的列表

时间:2015-11-03 04:06:10

标签: wicket wicket-6 wicket-1.6

假设我们有以下实体(表示m:n关系,连接表上有附加列):

#define V_Str(x)                    #x
#define xV_Str(x)                   V_Str(x)
#define V_FORMAT(a,b,c,d,e)         a.b.c.d.e
#define V_PROD_STR                  xV_Str(V_FORMAT(13,2,99,44,0)0)

我想创建一个public class User { private String name; private List<Login> logins; } public class Login { private User user; private Website website; private String login; } public class Website { private String name; private List<Login> logins; } 编辑表单,其中包含每个现有网站的一个登录输入字段(以便所有现有网站都在表单中)。例如,有2个网站定义(网站1,网站2),我想看看:

form

我的问题是在提交表单时实现以下行为:如果网站填写了登录输入字段,则应将其添加到user1的登录中,如果它是空的,则不应添加/删除。

我使用User模型(用户名)创建表单,网站的字段使用由所有登录模型支持的User(直接从DB获取)。这使我的表单看起来像预期的那样,但行为不存在,因为网站模型独立于ListView模型。你推荐的方法是什么?

2 个答案:

答案 0 :(得分:1)

使用由所有可能的ListView对象列表支持的Login,即现有的Login对象(如果存在)和虚拟/空/新Login对象每个Website都不存在。

然后在表单提交中保存那些没有 - Login和非空登录字段的null个对象。

您可以创建一个bean而不是直接使用Login对象,但它的工作方式相同。

如果您还想删除用户删除了登录值的Login个对象,请创建一些方法来检查Login对象之前是否已保存(即{{1} } field是notempty once)并删除该对象,如果它现在为空。

答案 1 :(得分:0)

ListView更改为PropertyListView就可以了。模型正确更新,因此我可以在onSubmit()中进行任何所需的后处理。使用ListView,表单呈现正常,但登录输入字段中的更改被忽略。