3.2.12.3.1. 处理违反唯一约束异常
CUBA 框架中,可以为 exception handler 展示的违反数据库约束的异常消息进行自定义。
自定义的消息需要在 web
模块的主消息包内定义,消息键值与数据库中唯一索引的名称全大写一致。示例:
IDX_SEC_USER_UNIQ_LOGIN = A user with the same login already exists
这样,界面展示的通知如下:
然后添加
IDX_DEMO_PRODUCT_UNIQ_NAME = A product with this name already exists
则会看到这样的消息:
检测数据库违反约束错误是通过 UniqueConstraintViolationHandler
类实现,根据数据库类型不同使用正则表达式做匹配。如果默认的表达式未能识别您数据库的异常,可以通过 cuba.uniqueConstraintViolationPattern 应用程序属性调整。
当然,也可以完全替换标准的 handler,将您自己的 handler 优先级调高,比如,@Order(HIGHEST_PLATFORM_PRECEDENCE - 10)
。