StitchAttrUtil.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package com.iamberry.wechat.utils;
  2. import com.iamberry.wechat.core.entity.page.PagedResult;
  3. import org.springframework.web.servlet.ModelAndView;
  4. import java.lang.reflect.Field;
  5. import java.util.*;
  6. public class StitchAttrUtil {
  7. /**
  8. * 组装参数时,会过滤以下参数
  9. * 推荐使用:addNoPro(),能够暂时过滤,不影响下次使用
  10. */
  11. public final static String noProperty[] = {
  12. "serialVersionUID",
  13. "page"
  14. };
  15. public static Set<String> propertySet = new HashSet<String>(Arrays.asList(noProperty));
  16. /**
  17. * 组装ModelAndView
  18. * @param object
  19. * @param modelAndView
  20. * @param url
  21. * @param pagedResult
  22. * @throws IllegalAccessException
  23. */
  24. public static void setModelAndView(Object object, ModelAndView modelAndView, String url, PagedResult<?> pagedResult) {
  25. StringBuilder sb = new StringBuilder(url);
  26. if(pagedResult.getTotal() != 0) {
  27. pagedResult.setPages((int) Math.ceil((double)pagedResult.getTotal()/pagedResult.getPageSize()));
  28. }
  29. sb.append("?pageSize=" + pagedResult.getPageSize());
  30. sb.append("&totalNum=" + pagedResult.getTotal() );
  31. StitchAttrUtil.setUrlByObj(sb,object);
  32. sb.append("&&pageNO=");
  33. Map<String, Object> map = StitchAttrUtil.getObjToMap(object);
  34. modelAndView.addAllObjects(map);
  35. modelAndView.addObject("page", pagedResult);
  36. modelAndView.addObject("url", sb.toString());
  37. modelAndView.addObject("pageNO", pagedResult.getPageNO());
  38. modelAndView.addObject("pageSize", pagedResult.getPages());
  39. return;
  40. }
  41. /**
  42. * 将obj 转为map,
  43. * 属性值为null的不会 put 到 Map 中
  44. * 属性名称在 noProperty 数组中的属性不会 put 到 Map 中
  45. * @param object
  46. * @return
  47. * @throws IllegalAccessException
  48. */
  49. public static Map<String, Object> getObjToMap(Object object) {
  50. Map<String, Object> map = new HashMap<>();
  51. Class<?> clazz = object.getClass();
  52. for (Field field : clazz.getDeclaredFields()) {
  53. field.setAccessible(true);
  54. String fieldName = field.getName();
  55. Object value = null;
  56. try {
  57. value = field.get(object);
  58. }catch (IllegalAccessException e){
  59. }
  60. if (value != null && !propertySet.contains(fieldName)) {
  61. map.put(fieldName, value);
  62. }
  63. }
  64. return map;
  65. }
  66. /**
  67. * 拼接url
  68. * @param sb
  69. * @param object
  70. * @throws IllegalAccessException
  71. */
  72. public static void setUrlByObj(StringBuilder sb,Object object){
  73. Class<?> clazz = object.getClass();
  74. for (Field field : clazz.getDeclaredFields()) {
  75. field.setAccessible(true);
  76. String fieldName = field.getName();
  77. Object value = null;
  78. try {
  79. value = field.get(object);
  80. }catch (IllegalAccessException e){
  81. }
  82. if (value != null && !propertySet.contains(fieldName)) {
  83. sb.append("&"+fieldName+ "=" + value.toString());
  84. }
  85. }
  86. }
  87. /**
  88. * 添加组装时被过滤的属性名称
  89. * @param pros
  90. */
  91. public static void addNoPro(String...pros){
  92. for(String pro : pros){
  93. if(pro != null && !"".equals(pro))
  94. propertySet.add(pro);
  95. }
  96. }
  97. }