1 23 24 package org.infoglue.cms.applications.common.actions; 25 26 import java.util.Locale ; 27 28 import org.apache.log4j.Logger; 29 import org.infoglue.cms.exception.ConstraintException; 30 import org.infoglue.cms.util.StringManager; 31 import org.infoglue.cms.util.StringManagerFactory; 32 33 import webwork.action.CommandDriven; 34 35 36 41 public abstract class AbstractFormAction extends AbstractAction implements CommandDriven 42 { 43 private final static Logger logger = Logger.getLogger(AbstractFormAction.class.getName()); 44 45 48 private Errors errors = new Errors(); 50 51 52 53 57 60 public Errors getErrors() { 61 return errors; 62 } 63 64 65 66 69 72 public String execute() throws Exception { 73 try { 74 return super.execute(); 75 } catch(ConstraintException e) { 76 setErrors(e); 77 return INPUT; 78 } 79 } 80 81 82 83 86 89 private void setErrors(ConstraintException exception) { 90 final Locale locale = getSession().getLocale(); 91 92 for(ConstraintException ce = exception; ce != null; ce = ce.getChainedException()) { 93 final String fieldName = ce.getFieldName(); 94 final String errorCode = ce.getErrorCode(); 95 final String localizedErrorMessage = getLocalizedErrorMessage(locale, errorCode); 96 97 getErrors().addError(fieldName, localizedErrorMessage); 98 } 99 logger.debug(getErrors().toString()); 100 } 101 102 105 private String getLocalizedErrorMessage(Locale locale, String errorCode) { 106 final StringManager stringManager = StringManagerFactory.getPresentationStringManager("org.infoglue.cms.entities", locale); 108 109 return stringManager.getString(errorCode); 112 } 113 114 115 116 } | Popular Tags |