我正在尝试在类级别上使用自定义注释实现跨场验证(JSR-303).但是不调用isValid方法(而是初始化方法).
所以我的问题是:为什么没有为这个类级验证器调用isValid方法?在物业层面定义它的作品!
我在JBoss AS 7和Websphere AS 8上尝试过它.
这是代码和JUnit测试(有效)
Test.java
public class Test {
@org.junit.Test
public void test() throws ParseException {
Person person = new Person();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMDD");
person.setPartyClosingDateFrom(new Date());
person.setPartyClosingDateTo(sdf.parse("20120210"));
Set<ConstraintViolation<Person>> violations = Validation.buildDefaultValidatorFactory().getValidator().validate(person);
for(ConstraintViolation<Person> violation : violations) {
System.out.println("Message:- " + violation.getMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud)
DateCompare.java
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import javax.validation.Constraint;
import javax.validation.Payload;
@Target({ TYPE})
@Retention(RUNTIME)
@Constraint(validatedBy = DateCompareValidator.class)
@Documented
public @interface DateCompare {
/** First date. …Run Code Online (Sandbox Code Playgroud) 我有一个页面,其输入文本组件标记为required="true"并Validator在服务器端具有自定义.
现在作为客户端,我提交的页面没有该组件呈现的HTML元素(这可以通过使用浏览器的内置DOM元素检查器从DOM树中删除元素来轻松实现).表单已成功提交,无需服务器端验证此必需组件.
这是按照JSF规范吗?有没有办法指定即使发布的页面不包含它们,也要执行页面中的验证器?