引用pom
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
代码
import com.alibaba.fastjson.JSONObject;
import com.google.common.base.Preconditions;
import lombok.Data;
import org.springframework.util.StringUtils;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Predicate;
public class ValidationUtil {
private static final String template = "参数[%s]不能为空";
/**
* @param data 待校验对象
* @param args 待校验字段列表
*/
public static void validParams(Object data, String... args) {
Preconditions.checkNotNull(data, "...args");
AtomicReference<String> p = new AtomicReference<>("");
Preconditions.checkArgument(test((t) -> {
try {
for (String e : args) {
p.set(e);
JSONObject j = (JSONObject) JSONObject.toJSON(data);
Preconditions.checkArgument(!StringUtils.isEmpty(j.getString(e)));
}
} catch (Exception e) {
return false;
}
return true;
}, args), template, p.get());
}
public static boolean test(Predicate<Object> predicate, Object o) {
return predicate.test(o);
}
//
public static void main(String[] args) {
TestData testData = new TestData();
testData.setName("迪迦奥特曼");
ValidationUtil.validParams(testData, "name", "age");
}
@Data
static
class TestData {
private String name;
private Integer age;
}
}
运行main方法测试结果
捕获一下异常就可以获取文案描述了,也可以根据需要改造加返回code
配合全局拦截,就可以友好的响应提示