123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- package com.iamberry.rst.utils;
- import com.iamberry.rst.core.page.PagedResult;
- import org.springframework.web.servlet.ModelAndView;
- import java.lang.reflect.Field;
- import java.util.*;
- public class StitchAttrUtil {
- /**
- * 组装参数时,会过滤以下参数
- * 推荐使用:addNoPro(),添加过滤
- */
- public final static String noProperty[] = {
- "serialVersionUID",
- "awaitingSignclosedProductInfoList",
- "signclosedProductInfoList"
- };
- public static Set<String> propertySet = new HashSet<String>(Arrays.asList(noProperty));
- /**
- * 组装ModelAndView
- * @param object
- * @param modelAndView
- * @param url
- * @param pagedResult
- * @throws IllegalAccessException
- */
- public static void setModelAndView(Object object, ModelAndView modelAndView, String url, PagedResult<?> pagedResult) {
- StringBuilder sb = new StringBuilder(url);
- if(pagedResult.getTotal() != 0) {
- pagedResult.setPages((int) Math.ceil((double)pagedResult.getTotal()/pagedResult.getPageSize()));
- }
- sb.append("?pageSize=" + pagedResult.getPageSize());
- sb.append("&totalNum=" + pagedResult.getTotal() );
- StitchAttrUtil.setUrlByObj(sb,object);
- sb.append("&&pageNO=");
- Map<String, Object> map = StitchAttrUtil.getObjToMap(object);
- modelAndView.addAllObjects(map);
- modelAndView.addObject("page", pagedResult);
- modelAndView.addObject("url", sb.toString());
- return;
- }
- /**
- * 将obj 转为map,
- * 属性值为null的不会 put 到 Map 中
- * 属性名称在 noProperty 数组中的属性不会 put 到 Map 中
- * @param object
- * @return
- * @throws IllegalAccessException
- */
- public static Map<String, Object> getObjToMap(Object object) {
- Map<String, Object> map = new HashMap<>();
- Class<?> clazz = object.getClass();
- for (Field field : clazz.getDeclaredFields()) {
- field.setAccessible(true);
- String fieldName = field.getName();
- Object value = null;
- try {
- value = field.get(object);
- }catch (IllegalAccessException e){
- }
- if (value != null && !propertySet.contains(fieldName)) {
- map.put(fieldName, value);
- }
- }
- return map;
- }
- /**
- * 拼接url
- * @param sb
- * @param object
- * @throws IllegalAccessException
- */
- public static void setUrlByObj(StringBuilder sb,Object object){
- Class<?> clazz = object.getClass();
- for (Field field : clazz.getDeclaredFields()) {
- field.setAccessible(true);
- String fieldName = field.getName();
- Object value = null;
- try {
- value = field.get(object);
- }catch (IllegalAccessException e){
- }
- if (value != null && !propertySet.contains(fieldName)) {
- sb.append("&"+fieldName+ "=" + value.toString());
- }
- }
- }
- /**
- * 添加组装时被过滤的属性名称
- * @param pros
- */
- public static void addNoPro(String...pros){
- for(String pro : pros){
- if(pro != null && !"".equals(pro))
- propertySet.add(pro);
- }
- }
- }
|