我正在尝试在类级别上使用自定义注释实现跨场验证(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) 我正在为列中的值显示(特定于语言)标签.该列是可排序的,JSF标签与数据库值不同.我正在使用带分页的primefaces数据表.
如何按标签排序,而不是按数据库值排序?是否有任何可能的翻译,所以我的JPA标准知道不同的价值?
在内存中排序不是一个选项,因为数据集可能很大,我只想显示一个子集(分页大小例如每页10个项目)
我想用AJAX验证所有输入字段.
例如,有3个输入字段.其中两个最小长度为3个字符,另一个由简单的正则表达式验证.因为<f:ajax>
我设置了keyup事件以快速查看ajax验证.完整示例可能如下所示:
<h:form>
<h:messages id="messages" />
<h:inputText id="text1" value="#{bean.text1}">
<f:validateLength minimum="3" />
<f:ajax execute="@this" event="keyup" render="messages" />
</h:inputText>
<h:inputText id="text2" value="#{bean.text2}">
<f:validateLength minimum="3" />
<f:ajax execute="@this" event="keyup" render="messages" />
</h:inputText>
<h:inputText id="text3" value="#{bean.text3}">
<f:validateRegex pattern="[A-Z][a-zA-Z]*" />
<f:ajax execute="@this" event="keyup" render="messages" />
</h:inputText>
</h:form>
Run Code Online (Sandbox Code Playgroud)
一旦我将输入的第一个输入字段留下错误并跳转到第二个字段并在那里键入无效的东西,第一个无效字段的消息就会消失,因为消息被重新呈现!一旦我开始在第一个输入字段中输入,将执行设置为@form将导致所有字段都被验证.
所以我的问题是:如何用AJAX显示所有验证错误,而不仅仅是最后一个无效字段的最后一条消息?
PS:我在Websphere上使用Mojarra 2.0.3(+ Richfaces + Primefaces)