
com.moon.spring.web.error.ErrorUtil Maven / Gradle / Ivy
package com.moon.spring.web.error;
import com.moon.core.lang.StringUtil;
import com.moon.core.util.CollectUtil;
import com.moon.core.util.ListUtil;
import com.moon.core.model.KeyValue;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
import java.util.Collection;
import java.util.List;
/**
* @author moonsky
*/
public final class ErrorUtil {
private final static char DOT = '.';
private static List sorted(List list) {
list.sort((o1, o2) -> {
String k1 = o1.getKey(), k2 = o2.getKey();
int v = StringUtil.countOf(k1, DOT) - StringUtil.countOf(k2, DOT);
return v == 0 ? k1.compareTo(k2) : v;
});
return list;
}
public static List forFieldErrors(Collection errors) {
List result = ListUtil.newList();
if (CollectUtil.isNotEmpty(errors)) {
for (FieldError error : errors) {
result.add(KeyValue.of(error.getField(), error.getDefaultMessage()));
}
}
return sorted(result);
}
public static List forObjectErrors(Collection errors) {
List result = ListUtil.newList();
if (CollectUtil.isNotEmpty(errors)) {
for (ObjectError error : errors) {
if (error instanceof FieldError) {
FieldError err = (FieldError) error;
result.add(KeyValue.of(err.getField(), err.getDefaultMessage()));
} else {
result.add(KeyValue.of(error.getObjectName(), error.getDefaultMessage()));
}
}
}
return sorted(result);
}
public static List forErrors(
Collection errs, Collection errors
) {
List result = forFieldErrors(errs);
return result.isEmpty() ? forObjectErrors(errors) : result;
}
public static List forErrorsByBindingResult(BindingResult result) {
return forErrors(result.getFieldErrors(), result.getAllErrors());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy