带有所有可用值列表的 Wicket 表单
Wicket form with list of all available values
假设我们有以下实体(表示 m:n 关系,在连接 table 上有附加列):
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;
}
我想创建一个 User
编辑表单,其中包含每个现有网站的一个登录输入字段(以便所有现有网站都在表单中)。例如,定义了 2 个网站(网站 1、网站 2),我希望看到:
我的问题是在提交表单时实现以下行为:如果填写了网站的登录输入字段,则应将其添加到用户 1 的登录名中,如果为空,则不应 added/get已删除。
我使用 User
模型(用于用户名)创建表单,网站字段使用 ListView
由所有登录模型(直接从数据库中获取)支持。这使我的表单看起来符合预期,但行为不存在,因为网站模型独立于 User
模型。您推荐的方法是什么?
使用由所有可能的 Login
对象列表支持的 ListView
,即现有 Login
对象(如果存在)和 dummy/empty/new Login
每个 Website
不存在的对象。
然后在提交表单时保存那些 Login
具有非 null
和非空登录字段的对象。
您可以创建一个 bean 而不是直接使用 Login
对象,但它的工作方式相同。
如果您还想删除用户删除了登录值的 Login
对象,请创建一些方法来检查 Login
对象之前是否已保存(即它的 login
字段曾经不为空),如果现在为空则删除该对象。
将 ListView
更改为 PropertyListView
就成功了。模型得到正确更新,因此我可以在 onSubmit()
中进行任何需要的后处理。使用 ListView
,表单呈现良好,但登录输入字段的更改被忽略。
假设我们有以下实体(表示 m:n 关系,在连接 table 上有附加列):
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;
}
我想创建一个 User
编辑表单,其中包含每个现有网站的一个登录输入字段(以便所有现有网站都在表单中)。例如,定义了 2 个网站(网站 1、网站 2),我希望看到:
我的问题是在提交表单时实现以下行为:如果填写了网站的登录输入字段,则应将其添加到用户 1 的登录名中,如果为空,则不应 added/get已删除。
我使用 User
模型(用于用户名)创建表单,网站字段使用 ListView
由所有登录模型(直接从数据库中获取)支持。这使我的表单看起来符合预期,但行为不存在,因为网站模型独立于 User
模型。您推荐的方法是什么?
使用由所有可能的 Login
对象列表支持的 ListView
,即现有 Login
对象(如果存在)和 dummy/empty/new Login
每个 Website
不存在的对象。
然后在提交表单时保存那些 Login
具有非 null
和非空登录字段的对象。
您可以创建一个 bean 而不是直接使用 Login
对象,但它的工作方式相同。
如果您还想删除用户删除了登录值的 Login
对象,请创建一些方法来检查 Login
对象之前是否已保存(即它的 login
字段曾经不为空),如果现在为空则删除该对象。
将 ListView
更改为 PropertyListView
就成功了。模型得到正确更新,因此我可以在 onSubmit()
中进行任何需要的后处理。使用 ListView
,表单呈现良好,但登录输入字段的更改被忽略。