我使用的是jquery/jsp/java ejb3.0/sql server。
用户界面要求(一个 jsp 页面)是一个复选框网格,大约 10 行高,最多大约 30 行宽(这各不相同),它代表一个多对多表关系的链接器表。
将从数据库填充复选框(如果链接器表中存在行,则选中复选框)。
然后,用户可以尽可能多次地选中/取消选中其中的一个。提交时,任何更改都应保存到数据库中。 更改将包括删除行(如果未选中)(并且如果选中/之前存在行),以及插入行(如果选中)(并且未选中/之前不存在行)。
我的问题是,实现这个的最佳方法是什么?使用 ajax 使用复选框 onchange 事件更新数据库是不合适的。我希望它是一个提交表单事件。
最佳答案
我会尝试通过退后一步并引入一个简单的 bean 来表示“元数据”(即 300 个左右的真/假值)来简化情况。
实际上,在处理这么多字段时,您可能会使用包含子 bean 的母 bean,这些子 bean 将概念上相关的字段保存在一起。例如:
public class MotherBean {
private UserSettingBean userSettingBean;
private UserRelationshipBean userRelationshipBean;
private UserPreferencesBean userPreferencesBean;
...
}
因此,您的“Web 层”成为 MotherBean
的简单 CRUD Controller ;每天都会做的事情。您甚至可以使用类似 Spring Roo 的内容为此搭建脚手架。
然后,当您将该 bean 向下传递到较低层时(此设计中可能有也可能没有传统的“服务”或“业务逻辑”层),您就有了一个 DAO,它将关系元数据转换为实际的多对多关系。考虑到我们正在讨论的领域数量,我再次建议将这项工作委托(delegate)给处理相关链接的子 DAO(因为需要一个更好的术语)。
显然,“get”路径反过来也是一样的。您向 MotherBeanDAO
请求与用户 1234 相关的元数据,它向其委托(delegate) DAO 请求子 Bean,将它们包装起来,并将生成的 MotherBean
一直传递到 Web 前端。
关于java - 复选框网格代表多对多数据库关系;从网络表单到数据库的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3574003/