java - 模型约束验证

标签 java validation model constraints

给定一个通用的基于树的 (Java) 数据模型。假设

abstract class XModel {
  long id;
  XModel parent;
}

class ProjectModel extends XModel {
  String customer;
}

class FileModel extends XModel {
  String name;
}

class FolderModel extends XModel {
  String name;
  String attributes;
}

我的挑战是确保 FileModels 仅用于 FolderModels(或 ProjectModels)并且 FolderModels 仅用于 ProjectModels。 由于模型应该是可扩展的 - 是否有任何通用的方法来执行此约束验证(如 XML 模式),而无需在验证方法中对父子关系进行硬编码?

最佳答案

我不确定它会有多大用处 - 取决于您如何创建树,但这可能有效:

abstract class XModel<T extends XModel> {
    long id;
    T parent;
}

class ProjectModel extends XModel { ... }

class FolderModel extends XModel<ProjectModel> { ... }

class FileModel extends XModel<FolderModel> { ... }

更新

要将验证逻辑与模型本身分开,您可以使用一些运行时 validator ,例如 HibernateSpring validator 。

关于java - 模型约束验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7075114/

相关文章:

java - 在 Spring 中使用验证将 ZonedDateTime 字段限制为毫秒时间的 3 位数字

ruby-on-rails - Rails - 验证关联的存在?

javascript - 使用 Angular Material 步进器在输入类型文本中添加自定义验证

java - 无法在 MacOS 上启动 JavaFX 应用程序(使用 Java 8)

java - Jackson:自定义解析 ObjectId(来自@JsonIdentityInfo)

java - Android 中的 Diffie Hellman key 交换

javascript - 扩展内置用户模型以支持环回中的更多属性和行为

javascript - 将矩形响应转换为模型对象

mysql - 在 Model 类中设置关系不会在 playFramework 中创建数据库表条目

java - 计算并输出两个字符串之间的相似字符