java如何组合验证两个或多个字段?
我正在使用JPA2.0/Hibernate验证来验证我的模型。我现在遇到一种情况,必须验证两个字段的组合:
public class MyModel {
public Integer getValue1() {
//...
}
public String getValue2() {
//...
}
}
如果getValue1()
和getValue2()
都是null
的,则该模型是无效的,否则是有效的
如何使用JPA2.0/Hibernate执行这种验证?对于简单的@NotNull
注释,两个getter都必须为非null才能通过验证
# 1 楼答案
为了正确使用Bean Validation,Pascal Thivent的answer中提供的示例可以重写如下:
# 2 楼答案
您可以像这样使用
@AssertTrue
验证:# 3 楼答案
对于多属性验证,应使用类级约束。从…起 Bean Validation Sneak Peek part II: custom constraints:
# 4 楼答案
当您希望继续使用Bean验证规范(例如here)时,定制类级验证器是一个不错的选择
如果您愿意使用Hibernate验证器功能,那么可以使用自Validator-4.1.0以来提供的@ScriptAssert。最终的除了JavaDoc之外:
例如:
# 5 楼答案
编程语言:Java
这是一个帮助我的解决方案
要求:
在UI上有一个表,其中包含对象列表,这些对象正在映射到具有fk关系的多个表/对象
现在验证已超出多个FK,只有3列无法复制。我的意思是3的组合不能复制
注意:由于我正在使用Java上的自定义框架,所以没有使用HashCode或equals的选项。如果我将使用数组索引迭代,这将增加我不想要的时间复杂性
解决方案:
我准备了一个字符串,它是一个自定义字符串,包含FK1的ID#FK2的ID#FK3的ID 例如:字符串的形式类似->;1000L#3000L#1300L#
对于这个字符串,我们将使用set的add()将其添加到一个集合中,如果出现重复,该集合将返回false
基于此标志,我们可以抛出验证消息
这对我有帮助。在某些情况下,DS可能没有帮助