我的应用程序有两层验证。第一层是由Bean Validation API执行的实体验证(例如,必填字段)。第二层是业务逻辑验证。例如,用户有一篇帖子。只有当用户是该帖子的创建者且该帖子评级<50时,用户才能删除帖子。因此,我需要像这样做:
if (post.getCreator().equals(session.getUser())) {
if (post.getRating() < 50) {
postRepository.delete(post);
} else errors.add(400, "Cant delete post with rating 50 or higher")
} else errors add (400, "You should be owner of the post")
我不喜欢这种方式,因为这些条件被重复使用,我需要复制代码。此外,如果条件数量大于5个左右,那么阅读和理解代码就变得不切实际。
此外,标准的Spring验证器在我需要对同一实体进行不同操作(例如删除和更新)的不同验证时并不是很有帮助。
因此,我正在寻找一种更智能的方法(可能是模式),如果有人能给我一些提示,我会非常感激。
提前感谢!