假设我们有以下实体(表示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),我想看看:
我的问题是在提交表单时实现以下行为:如果网站填写了登录输入字段,则应将其添加到user1的登录中,如果它是空的,则不应添加/删除。
我使用User
模型(用户名)创建表单,网站的字段使用由所有登录模型支持的User
(直接从DB获取)。这使我的表单看起来像预期的那样,但行为不存在,因为网站模型独立于ListView
模型。你推荐的方法是什么?
答案 0 :(得分:1)
使用由所有可能的ListView
对象列表支持的Login
,即现有的Login
对象(如果存在)和虚拟/空/新Login
对象每个Website
都不存在。
然后在表单提交中保存那些没有 - Login
和非空登录字段的null
个对象。
您可以创建一个bean而不是直接使用Login
对象,但它的工作方式相同。
如果您还想删除用户删除了登录值的Login
个对象,请创建一些方法来检查Login
对象之前是否已保存(即{{1} } field是notempty once)并删除该对象,如果它现在为空。
答案 1 :(得分:0)
将ListView
更改为PropertyListView
就可以了。模型正确更新,因此我可以在onSubmit()
中进行任何所需的后处理。使用ListView
,表单呈现正常,但登录输入字段中的更改被忽略。