Author: chatellier Date: 2010-10-29 09:47:19 +0000 (Fri, 29 Oct 2010) New Revision: 125 Log: Gestion des erreurs d'action (xwork) Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ValidationService.java Modified: trunk/coser-business/src/main/java/fr/ifremer/coser/services/ValidationService.java =================================================================== --- trunk/coser-business/src/main/java/fr/ifremer/coser/services/ValidationService.java 2010-10-29 08:06:11 UTC (rev 124) +++ trunk/coser-business/src/main/java/fr/ifremer/coser/services/ValidationService.java 2010-10-29 09:47:19 UTC (rev 125) @@ -28,6 +28,7 @@ import static org.nuiton.i18n.I18n._; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -35,6 +36,7 @@ import java.util.Map; import java.util.Set; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.xwork.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -121,20 +123,17 @@ * @return */ protected List<ValidationError> validate(AbstractDataEntity bean) { - List<ValidationError> result = null; + List<ValidationError> result = new ArrayList<ValidationError>();; try { // obligatoire pour les appel dans les thread et swing EDT ActionContext.setContext(context); for(ValidationLevel validationLevel : ValidationLevel.values()) { - + try { validator.validate(bean, validationLevel.getXWorkContext(), validationContext); - - if (validationContext.hasFieldErrors()) { - if (result == null) { - result = new ArrayList<ValidationError>(); - } + + if (validationContext.hasErrors()) { Map<String, List<String>> fieldErrors = validationContext.getFieldErrors(); for (List<String> errors : fieldErrors.values()) { @@ -148,14 +147,28 @@ result.add(error); } + + Collection<String> actionMessages = validationContext.getActionErrors(); + if (CollectionUtils.isNotEmpty(actionMessages)) { + ValidationError error = new ValidationError(); + String messages = StringUtils.join(actionMessages, ", "); + error.setMessage(messages); + error.setLevel(validationLevel); + + // add error line + error.setLineNumber(bean.getLine()); + + result.add(error); + } } } finally { // vidage par log level validationSupport.clearFieldErrors(); + validationSupport.clearActionErrors(); } } - + } catch (ValidationException ex) { if (log.isErrorEnabled()) { log.error("Can't validate bean", ex); @@ -163,6 +176,7 @@ } finally { validationSupport.clearFieldErrors(); + validationSupport.clearActionErrors(); } return result; }
participants (1)
-
chatellierï¼ users.labs.libre-entreprise.org