-
FEATURED COMPONENTS
First time here? Check out the FAQ!
Hi,
I am now integrating JSR303 validation with our ZK-based application.
On each BindingValidateEvent I use our standard validation constraints and translate any violations to ZK exceptions:
public void validate(ValidationContext ctx) {
Component component = ctx.getBindContext().getComponent();
Object value = ctx.getProperty().getValue();
Object vm = ctx.getBindContext().getBinder().getViewModel();
List<WrongValueException> propertyViolationExceptions = new LinkedList<WrongValueException>();
String propName = ctx.getProperty().getProperty();
LOG.info(String.format("bean: %1$s, expression = %2$s, value = %3$s", vm, propName, value));
Set<ConstraintViolation<Object>> violations =
VALIDATOR.validateValue((Class<Object>)vm.getClass(), propName, value);//, StructureNodeScreenModelValidations.class, Single.class);
ValidationUtil.translate(component, violations, propertyViolationExceptions);
if ( !propertyViolationExceptions.isEmpty() ) {
throw ValidationUtil.toFormViolations(propertyViolationExceptions);
}
}
This seems to work, but now I always get my log file cluttered with exceptions which actually are not exceptions:
27.08.2012 12:39:14 org.zkoss.bind.impl.BinderImpl$CommandEventListener onEvent:1103
SCHWERWIEGEND: null
org.zkoss.zk.ui.WrongValuesException
at com.gui.validator.ValidationUtil.toFormViolations(ValidationUtil.java:55)
at com.gui.validator.Jsr303ValidatorAdaptor.validate(Jsr303ValidatorAdaptor.java:39)
at org.zkoss.bind.impl.SavePropertyBindingImpl.validate(SavePropertyBindingImpl.java:197)
at org.zkoss.bind.impl.PropertyBindingHandler.doValidateSaveEvent(PropertyBindingHandler.java:233)
at org.zkoss.bind.impl.PropertyBindingHandler.doSaveEvent(PropertyBindingHandler.java:197)
at org.zkoss.bind.impl.BinderImpl.doSaveEvent(BinderImpl.java:1388)
at org.zkoss.bind.impl.BinderImpl.access$1300(BinderImpl.java:95)
at org.zkoss.bind.impl.BinderImpl$CommandEventListener.onEvent0(BinderImpl.java:1128)
at org.zkoss.bind.impl.BinderImpl$CommandEventListener.onEvent(BinderImpl.java:1101)
at org.zkoss.zk.ui.AbstractComponent.onEvent(AbstractComponent.java:2736)
at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2707)
at org.zkoss.zk.ui.AbstractComponent.service(AbstractComponent.java:2648)
at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:136)
at org.zkoss.zk.ui.impl.EventProcessingThreadImpl.process0(EventProcessingThreadImpl.java:534)
at org.zkoss.zk.ui.impl.EventProcessingThreadImpl.run(EventProcessingThreadImpl.java:461)
Actually, I think it is a bit strange that invalid user input is considered exceptional. Can this somehow be turned off without turning off logging of really exceptional conditions?
Thanks,
David
Asked: 2012-08-27 10:53:27 +0800
Seen: 60 times
Last updated: Aug 27 '12