import org.springframework.util.ReflectionUtils;
ReflectionUtils.doWithFields循环遍历对象中的所有属性。只处理其中
ExcelProperty 注解的字段。这个代码对很多单位最简单的日常表格维护效率很高。
1 List<MemberInfoVo> memberInfoFields=new ArrayList<>();
2
3 ReflectionUtils.doWithFields(memberInfo.getClass(), new ReflectionUtils.FieldCallback() {
4 @Override
5 public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException {
6 field.setAccessible(true);
7 ExcelProperty excelProperty=field.getAnnotation(ExcelProperty.class);
8 if(excelProperty!=null){
9 /**
10 * ExcelProperty中的中文注释
11 */
12 String chineseName=StringUtils.join(excelProperty.value());
13 /**
14 * POJO中的英文属性字母。做修改页面的时候需要
15 */
16 Object fieldValue = field.get(memberInfo);
17 /**
18 * 这个属性对应的值。这里简化只处理为字符串String
19 */
20 String value=fieldValue==null?"":(String) fieldValue.toString();
21 if(StringUtils.isNotBlank(value)){
22 MemberInfoVo vo=new MemberInfoVo(chineseName,value,field.getName());
23 memberInfoFields.add(vo);
24 }
25 }
26 }
27 });
28
29 request.setAttribute("memberInfoFields",memberInfoFields);
将属性全部
memberInfoFields list
在页面渲染展示
1 public class MemberInfoVo {
2 private String chineseName;
3 private String value;
4 private String fieldName;
5
6 public MemberInfoVo(){
7 super();
8 }
9
10 public MemberInfoVo(String chineseName,String value,String fieldName){
11 this.chineseName=chineseName;
12 this.value=value;
13 this.fieldName=fieldName;
14 }