如何更新Liferay 7.2表单数据并基于第二库ddmcontent表搭建可编辑DXP页面
Liferay DXP 备用库表单数据审核页面实现方案
方案选型对比
- 不推荐直接使用独立JSP+JDBC方案:该方案虽然开发门槛低,但会直接跳过Liferay内置的权限校验、CSRF防护、事务管理、审计日志等基础能力,后续需要单独开发管理员权限控制、操作留痕等配套功能,长期维护成本很高,也不符合Liferay的官方开发规范。
- 优先选择复用Liferay现有能力的方案,安全性、开发效率、可维护性都更有保障。
核心配置:接入第二个备用数据源
你有操作原生ddmcontent表开发REST API的经验,仅需额外配置Liferay多数据源即可拉取备用库数据:
- 在
portal-ext.properties中添加备用库数据源配置:
jdbc.backupDS.driverClassName=com.mysql.cj.jdbc.Driver jdbc.backupDS.url=jdbc:mysql://<备用库地址>/<库名>?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8 jdbc.backupDS.username=<数据库用户名> jdbc.backupDS.password=<数据库密码> jdbc.backupDS.maxActive=100 jdbc.backupDS.minIdle=10
- 数据访问有两种实现方式可选:
- 自定义Service Builder模块,指定数据源为上述配置的
backupDS,自动生成ddmcontent表对应的持久层代码 - 直接通过
JDBCUtil手动获取数据源连接执行原生SQL,示例代码:
- 自定义Service Builder模块,指定数据源为上述配置的
DataSource backupDS = DataSourceFactoryUtil.initDataSource("jdbc.backupDS."); Connection conn = backupDS.getConnection(); // 执行备用库ddmcontent表的查询、修改逻辑
审核页面最优实现方案
推荐基于Liferay MVC Portlet开发,完全复用Liferay原生能力:
- 权限控制:直接通过Liferay后台角色配置,仅开放给表单管理员角色访问、操作数据,无需自行开发权限体系
- 数据展示:后台查询备用库
ddmcontent的JSON数据后,可以直接复用Liferay内置的DDM表单渲染API,渲染成和用户提交时完全一致的表单样式,无需自行开发前端表单组件 - 数据修改:管理员修改提交后,直接将更新后的JSON写回备用库
ddmcontent表即可,可按需对接Liferay自带的工作流审批、操作审计能力,自动留存所有修改记录 - 如果需要更复杂的交互,也可以基于你之前开发的REST API扩展,适配备用数据源的读写逻辑,前端用Liferay自带的React组件开发前后端分离页面。
注意事项
- 不要修改备用库
ddmcontent表的主键、结构字段,避免和原有库数据逻辑冲突 - 操作备用库数据时建议添加事务控制,避免异常导致数据不一致
- 解析表单JSON时可以复用Liferay内置的
DDMFormValuesJSONDeserializer工具类,无需自行处理字段映射逻辑
内容的提问来源于stack exchange,提问作者Aftab
相关产品推荐
相关产品推荐

