通过分析@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 }