代码之家  ›  专栏  ›  技术社区  ›  NimChimpsky

复选框网格表示多对多数据库关系;从WebForm到数据库的最佳方法

  •  1
  • NimChimpsky  · 技术社区  · 16 年前

    我使用的是jQuery/JSP/Java EJB3.0/SQL Server。

    用户界面需求(JSP页面)是一个由复选框组成的网格,高约10行,宽约30行(这会有所不同),它表示多对多表关系的链接器表。

    将从数据库填充复选框(如果链接器表中存在行,则选中复选框)。

    然后,用户可以尽可能多次选中/取消选中任何一个选项。提交时,任何更改都应保存到数据库。 更改将包括删除未选中的行(如果选中/之前存在行),插入一行(如果选中/之前不存在行)。

    我的问题是,实现这一点的最佳方法是什么?使用Ajax使用复选框onChange事件更新数据库是不合适的。我希望它是一个提交表单事件。

    1 回复  |  直到 12 年前
        1
  •  1
  •   millhouse    15 年前

    我尝试通过后退一步并引入一个简单的bean来表示“元数据”(即300左右的真/假值),来对情况进行解压。

    实际上,在处理许多字段时,您可能会使用包含子bean的母bean,子bean将概念上相关的字段放在一起。例如。:

    public class MotherBean {
        private UserSettingBean userSettingBean;
        private UserRelationshipBean userRelationshipBean;
        private UserPreferencesBean userPreferencesBean;
        ...
    }
    

    因此,您的“Web层”成为 MotherBean 每天都要做的事。你甚至可以用 Spring Roo 搭建脚手架。

    然后,当您将bean向下传递到较低的层时(在这个设计中,您可能有也可能没有传统的“服务”或“业务逻辑”层),您有一个DAO,它将关系元数据转换为 实际的 多对多关系。考虑到我们讨论的字段的数量,我再次建议将此工作委托给处理相关链接的子DAO(为了更好的术语)。

    显然,“get”路径是相反的。你问 MotherBeanDAO 对于与用户1234相关的元数据,它向其委托DAO请求子bean,并将它们包装起来,并将结果 母豆 一直传递到Web前端。