1. 程式人生 > >將Java物件vo中屬性為null的轉為""

將Java物件vo中屬性為null的轉為""

背景:之所以寫這個方法,是因為在用ireport進行列印的時候,如果你查詢的結果,實體中的屬性為null,那麼列印預覽的時候會顯示一個null,按照要求null是不應該顯示,只需要顯示空白就可以。寫的這個方法就解決了列印時查詢的結果中有的實體的屬性值為null的現象

public static Object checkNull(Object vo) throws Exception {
        // 獲取實體類的所有屬性,返回Field陣列
        Field[] field = vo.getClass().getDeclaredFields();
        // 獲取屬性的名字
for (int i = 0; i < field.length; i++) { //可訪問私有變數 field[i].setAccessible(true); // 獲取屬性的名字 String name = field[i].getName(); // 獲取屬性型別 String type = field[i].getGenericType().toString(); // 將屬性的首字母大寫 name = name.replaceFirst(name.substring(0
, 1), name.substring(0, 1) .toUpperCase()); if (type.equals("class java.lang.String")) { // 如果type是類型別,則前面包含"class ",後面跟類名 Method m = vo.getClass().getMethod("get" + name); // 呼叫getter方法獲取屬性值 String value = (String) m.invoke(vo); if
(!StringUtils.hasValue(value)) { //給屬性設值 field[i].set(vo, field[i].getType().getConstructor(field[i].getType()).newInstance("")); } } } return vo; }

彩蛋:其實最後我發現,可以不用寫這個方法,可以直接在模板進行勾選和設定,如下圖所示:
這裡寫圖片描述