StitchAttrUtil.java 3.3 KB

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