如@Abhijeet所述,将
userId属性动态传递给约束验证器是不可能的。至于如何更好地处理此验证案例,有干净的解决方案和肮脏的解决方案。
干净的解决方案
是将所有业务逻辑提取到服务方法中,并
ProjectParam在服务级别进行验证。这样,您可以在上添加
userId属性
ProjectParam,然后在调用服务之前将其从映射
@PathVariable到
@RequestBody。然后
UniqueProjectNamevalidator,您调整以验证
ProjectParam而不是
String。
肮脏的解决方案 是使用Hibernate
Validator的交叉参数约束(另请参见此链接以获取示例)。本质上 ,您 将 两个控制器方法参数都 视为自定义验证器的输入。



