
com.scloudic.rabbitframework.web.utils.ValidationUtils Maven / Gradle / Ivy
package com.scloudic.rabbitframework.web.utils;
import com.scloudic.rabbitframework.core.utils.StatusCode;
import com.scloudic.rabbitframework.web.Result;
import org.apache.commons.collections.CollectionUtils;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.groups.Default;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
/**
* hibernate验证共公类
*
* @author justin.liang
*/
public class ValidationUtils {
private static Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
public static List validateEntity(T obj, String... fieldFilter) {
List fieldErrors = new ArrayList();
Set> set = validator.validate(obj, Default.class);
if (CollectionUtils.isEmpty(set)) {
return fieldErrors;
}
fieldErrors = getFiledErrors(set, fieldFilter);
return fieldErrors;
}
private static List getFiledErrors(Set> set, String... fieldFilter) {
List filter = Arrays.asList(fieldFilter);
List fieldErrors = new ArrayList();
for (ConstraintViolation cv : set) {
String fieldName = cv.getPropertyPath().toString();
if (filter.contains(fieldName)) {
continue;
}
String message = cv.getMessage();
FieldError fieldError = getFieldError(fieldName, message);
fieldErrors.add(fieldError);
}
return fieldErrors;
}
public static FieldError getFieldError(String fieldName, String message) {
FieldError fieldError = new FieldError();
if (message.indexOf("{") != -1 && message.lastIndexOf("}") != -1) {
message = message.substring(message.indexOf("{") + 1, message.lastIndexOf("}"));
}
fieldError.setFieldName(fieldName);
fieldError.setErrorMessage(ServletContextHelper.getMessage(message));
return fieldError;
}
public static Result validateProperty(T obj, String propertyName) {
int status = StatusCode.SC_OK.getValue();
String msg = "";
Set> set = validator.validateProperty(obj, propertyName, Default.class);
if (CollectionUtils.isNotEmpty(set)) {
status = StatusCode.SC_VALID_ERROR.getValue();
StringBuffer errorMsg = new StringBuffer();
for (ConstraintViolation cv : set) {
errorMsg.append("arg:");
errorMsg.append(cv.getPropertyPath().toString());
errorMsg.append("error:");
errorMsg.append(cv.getMessage());
}
msg = errorMsg.toString();
}
return Result.failure(status, msg);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy