通过分析@ExcelProperty注解的文字信息,实现半自动展示页,编辑页

 

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     }

 

posted @ 2023-01-03 11:38  nanahome  阅读(2974)  评论(0编辑  收藏  举报