package com.sishuok.spring4.error;
import com.sishuok.spring4.SpringUtils;
import org.springframework.context.MessageSource;
import org.springframework.validation.Errors;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
import java.io.Serializable;
import java.util.*;
/**
* field
* <p>User: Zhang Kaitao
* <p>Date: 13-12-16
* <p>Version: 1.0
*/
public class AjaxError implements Serializable {
private List<String> globalErrors;
private List<Map<String, String>> fieldErrors;
public List<String> getGlobalErrors() {
return globalErrors;
}
public List<Map<String, String>> getFieldErrors() {
return fieldErrors;
}
public static AjaxError from(Errors errors, Locale locale) {
AjaxError ajaxError = new AjaxError();
if(errors.hasGlobalErrors()) {
ajaxError.globalErrors = new ArrayList<>();
for(ObjectError error : errors.getGlobalErrors()) {
ajaxError.globalErrors.add(getMessage(error, locale));
}
}
if(errors.hasFieldErrors()) {
ajaxError.fieldErrors = new ArrayList<>();
for(FieldError error : errors.getFieldErrors()) {
Map<String, String> errorData = new HashMap<>();
errorData.put(error.getField(), getMessage(error, locale));
ajaxError.fieldErrors.add(errorData);
}
}
return ajaxError;
}
private static String getMessage(ObjectError error, Locale locale) {
MessageSource messageSource = SpringUtils.getBean("messageSource");
return messageSource.getMessage(error.getCode(), error.getArguments(), error.getDefaultMessage(), locale);
}
}