Java中將物件中屬性值為空字串設定為null
阿新 • • 發佈:2019-02-15
業務邏輯中需要將物件中為空字串的屬性轉換為null,簡單的一種方式是前端JS控制,如果為空字串則不傳到後臺,後臺接收到沒有值的屬性預設為null。這種方式會導致JS繁瑣。下面用後臺通過反射的方式來解決此問題。
public static <T> T setNullValue(T source) throws IllegalArgumentException, IllegalAccessException, SecurityException {
Field[] fields = source.getClass().getDeclaredFields();
for (Field field : fields) {
if (field.getGenericType ().toString().equals(
"class java.lang.String")) {
field.setAccessible(true);
Object obj = field.get(source);
if (obj != null && obj.equals("")) {
field.set(source, null);
} else if (obj != null) {
String str = obj.toString ();
str = StringEscapeUtils.escapeSql(str);//StringEscapeUtils是commons-lang中的通用類
field.set(source, str.replace("\\", "\\" + "\\").replace("(", "\\(").replace(")", "\\)")
.replace("%", "\\%").replace("*", "\\*").replace("[", "\\[").replace ("]", "\\]")
.replace("|", "\\|").replace(".", "\\.").replace("$", "\\$").replace("+", "\\+").trim()
);
}
}
}
return source;
}
只需要在處理業務前呼叫一下上述方法即可。