我们在这里使用标准的SEAM设置...完成使用休眠的验证系统。
基本上发生的事情是用户在html输入中输入值,而seam使用hibernate验证验证他们输入的值。
大部分工作都很好,除了这里是我的问题:我们需要记录每个字段的验证结果,我无法找到一个好的方法来做到这一点...理想情况下,它可以通过与缝/休眠验证系统,只记录验证结果,但据我所知,有没有办法做到这一点?
过去有没有人做过这样的事情?有几个讨厌的工作,但我更喜欢干净利落。
快速概述我们现在正在为上下文发生的过程:
1)用户输入字段值 2)onblur值设置为ajax(a4j:support)此时验证器触发并重新渲染div,如果发生任何验证错误,它们现在在页面上可见
我希望在第二步发生的是'ValidationListener'或类似的东西,它将允许我们记录验证的结果。
感谢任何人都能提供帮助:o
答案 0 :(得分:2)
您应该能够通过创建一个具有观察org.jboss.seam.validationFailed事件的方法的Bean来实现。然后,该方法可以执行您想要的任何日志记录。
@Name("validationObserver")
public class ValidationObserver() {
@Observer("org.jboss.seam.validationFailed")
public void validationFailed() {
//Do stuff
}
}
validationFailed事件不传递任何参数,所以如果你想记录错误是什么,你必须询问FacesMessages或者可能是Hibernate Validation框架本身。
答案 1 :(得分:0)
我只使用Hibernate进行验证,你可以按照Damo的建议在validationFailed()方法中使用Hibernate ClassValidator。
例如:
public <T> InvalidValue[] validateWithHibernate(T object) {
ClassValidator<T> validator = new ClassValidator(object.getClass());
InvalidValue[] invalidValues = validator.getInvalidValues(object);
return invalidValues;
}