我已经知道如何在实体类中的特定属性上添加基于注释的验证,例如:-
public class Person {
@NotNull
private String firstName;
private String lastName;
//...
}
Run Code Online (Sandbox Code Playgroud)
但是是否可以在类 Person 上添加注释,以便通过创建自定义验证类并在某处处理验证来验证该类中的所有属性,例如:-
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = ElementType.METHOD)
public @interface PersonneName {
public String firstName();
}
Run Code Online (Sandbox Code Playgroud)
我正在开发一个项目,从数据库获取约束并创建自定义验证类,并根据从数据库获取的约束应用于实体类属性。请建议。
我是Java编程语言的新手.
我熟悉C和C++,但无法理解下面程序的行为.
public class Test {
static int x = 11;
private int y = 33;
public void method1(int x) {
Test t = new Test();
this.x = 22;
y = 44;
System.out.println("Test.x: " + Test.x);
System.out.println("t.x: " + t.x);
System.out.println("t.y: " + t.y);
System.out.println("y: " + y);
}
public static void main(String args[]) {
Test t = new Test();
t.method1(5);
}
}
Run Code Online (Sandbox Code Playgroud)
正确的输出:
Test.x: 22
t.x: 22
t.y: 33
y: 44
Run Code Online (Sandbox Code Playgroud)
预期产量:
Test.x: 22
t.x: 22
t.y: 44 // …Run Code Online (Sandbox Code Playgroud) 似乎JSF 2.0没有调用"类级别约束".引用SO答案
JSF 2.0不调用类级验证约束.来自JSF验证: JSF 2提供了与JSR-303约束的内置集成.在应用程序中使用bean验证时,JSF会自动使用UIInput值引用的Bean约束.
答案还建议使用SeamFaces来验证类级约束.
不幸的是,这是一个非选择,因为它引入了一个有点大量的依赖,只是为了验证应该验证什么.
我的问题是:
控制器中的手动验证是繁琐的,并且有很多重复的代码,因此我想避免使用它.
我试图通过注释要验证的Controller-Field来做到@Valid这一点,这没有帮助.
我想应该可以让"流程验证"阶段为我做这件事,或者在Filter"更新模型值"阶段之后挂钩类似于a的东西,它将通过验证集中运行模型值.