public static String shopBrowseUrl(ItemSearch sourceItemSearch, String alias, String strChange) { ItemSearch itemSearch; try { itemSearch = (ItemSearch) BeanUtils.cloneBean(sourceItemSearch); } catch (IllegalAccessException | InstantiationException | InvocationTargetException | NoSuchMethodException ex) { itemSearch = new ItemSearch(); } if (strChange != null && !strChange.equals("")) { List<Map<String, String>> changes = (List<Map<String, String>>) JsonUtils.decode(strChange, new TypeToken<List<Map<String, String>>>() {}.getType()); for (Map<String, String> ch : changes) { String op = ch.get("op"); String key = ch.get("key"); String val = ch.get("val"); if (key.equals("cid")) { itemSearch.setShopCategoryId(val); } if (key.equals("keyword")) { if (op.equals("mk")) { itemSearch.setKeyword(val); } else if (op.equals("rm")) { itemSearch.setKeyword(null); } } if (key.equals("promotionId")) { if (op.equals("mk")) { itemSearch.setPromotionId(val); } else if (op.equals("rm")) { itemSearch.setPromotionId(null); } } if (key.equals("order")) { try { itemSearch.setOrderBy(Integer.parseInt(val)); } catch (NumberFormatException ex) { } } if (key.equals("page")) { try { itemSearch.setPageIndex(Integer.parseInt(val)); } catch (NumberFormatException ex) { } } } } return UrlUtils.shopBrowseUrl(itemSearch, alias); }