购物车搜索栏解决GET请求中文乱码问题
2016-03-22 09:40
330 查看
昨天安排开发新功能,在购物车中加入搜索栏,搜索购物车中的商品是否存在,买了多少。。。。当时想想就觉得使用这商城的人都是土豪啊。。。购物车买的东西都不知道有多少,还需要增加搜索栏进行搜索。。。。没想那么多,就开始开发吧。
前端页面基本写完,想着地址栏里面没有参数,想着应该是发送的post请求吧,使用ajax传入中文应该轻轻松松,但是一看后台,我靠。。。
也不多想了。。。改吧。。。
首先前台JavaScript中使用encodeURIComponent()对中文进行处理,对于此函数encodeURIComponent()和escape,encodeURI的区别请参照如下地址:
/article/9934622.html
前台页面为:
然后后台接受进行相应的处理:
前端页面基本写完,想着地址栏里面没有参数,想着应该是发送的post请求吧,使用ajax传入中文应该轻轻松松,但是一看后台,我靠。。。
//获取购物车订单 @RequestMapping(value="/getOrder", method=RequestMethod.GET) public String list(HttpServletRequest request,HttpSession session){ Agent agent= (Agent) session.getAttribute("agent"); //取出购物车 List<Cart> list=cartService.finCart(agent.getId()); Map<String,Cart> map=new HashMap<String, Cart>(); for(Cart dic:list){ map.put(dic.getGoods_id(), dic); } // Map<String,Object> map = null; if(map != null){ //生成订单编号 String order_num="YCF"+DateUtil.formatDate(new Date(), "yyyyMMddHHmmssSSS"); request.setAttribute("order_num",order_num); request.setAttribute("carts", map); request.setAttribute("cartsCount", map.size()); }else { request.setAttribute("cartsCount", 0); } session.setAttribute("productNums",GoodsController.getCartsProNums(cartService,session)); return "shop/order/cart.jsp"; }竟然发送的是GET请求,前台使用的是EL表达式和jstl标签进行的显示效果。。。。而且后台的MAP传入前台影响了排序。。。真不知道之前这个功能是怎么设计的。。。心中一万匹草泥马跑过。。。。
也不多想了。。。改吧。。。
首先前台JavaScript中使用encodeURIComponent()对中文进行处理,对于此函数encodeURIComponent()和escape,encodeURI的区别请参照如下地址:
/article/9934622.html
前台页面为:
//点击搜索查看购物车的商品 $(".search-btn").click(function(){ var goods_name = $("#goods_name").val(); if(goods_name!=""&&goods_name!=null) { window.location.href=$("#basePath").val() + "/shop/orders/getOrder.do?goods_name="+encodeURIComponent(encodeURIComponent(goods_name)); } });
然后后台接受进行相应的处理:
goodsName=java.net.URLDecoder.decode(goodsName,"UTF-8");这样就不必改tomcat配置或者进行ISO885921转码来得那么被动了。测试没有问题。在购物车中我添加了flag开关是用于查明使用搜索条件后list的size是否为0的情况,因为前台使用的是jstl加EL表达式判断而展现不同的DIV的,增加了搜索条件后展示层也需要跟着变动更改后的后台代码为:
//获取购物车订单 @RequestMapping(value="/getOrder", method=RequestMethod.GET) public String list(HttpServletRequest request,HttpSession session){ Agent agent= (Agent) session.getAttribute("agent"); String goodsName = request.getParameter("goods_name"); List<Cart> list = null; //用于判断搜索查询条件情况下list.size()是否为0的情况,为0则将flag设置为false,用于前台显示全部列表问题 boolean flag = true; try { if(StringUtil.isNotEmpty(goodsName)) { goodsName=java.net.URLDecoder.decode(goodsName,"UTF-8"); list = cartService.findCartByGoodsName(agent.getId(), goodsName); if(list.size() == 0) { flag = false; } } else { //取出购物车 list = cartService.finCart(agent.getId()); } // Map<String,Cart> map=new HashMap<String, Cart>(); // for(Cart dic:list){ // map.put(dic.getGoods_id(), dic); // } // Map<String,Object> map = null; // if(map != null){ if(list.size() > 0){ //生成订单编号 String order_num="YCF"+DateUtil.formatDate(new Date(), "yyyyMMddHHmmssSSS"); request.setAttribute("order_num",order_num); // request.setAttribute("carts", map); // request.setAttribute("cartsCount", map.size()); request.setAttribute("carts", list); request.setAttribute("cartsCount", list.size()); } else if(flag) { request.setAttribute("cartsCount", 0); } else { //搜索查询条件情况下list.size()为0,则给出链接可以进入完整购物车订单列表 request.setAttribute("cartsCount", -1); } session.setAttribute("productNums",GoodsController.getCartsProNums(cartService,session)); } catch (UnsupportedEncodingException e) { log.error(e.getMessage(), e); e.printStackTrace();TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } return "shop/order/cart.jsp"; }
相关文章推荐
- 原生TabLayout实现ViewPagerIndicator
- concurrent包
- Android自动化测试之Monkeyrunner使用方法及实例 - 大头爸爸的博客 - 博客频道 - CSDN.NET
- 成都Uber优步司机奖励政策(3月22日)
- ExtJs之Ext.core.Element
- 作业三:代码复审
- 用正则表达式验证邮箱和手机号
- Python爬虫入门(5):URLError异常处理
- html5 web storage 存储
- .NET 把数据库数据放入数组的一段代码
- 常用的一些SQL语句
- 微软Hololens应用及开发——HoloLens介绍篇(二)硬件介绍
- VS2008错误调试方法
- Application,Seccion和Cookie的区别
- 北京Uber优步司机奖励政策(3月22日)
- [转]Ext ComboBox 默认选中某一项
- psp记录个人项目花费时间
- 敏捷开发需要编写文档吗
- UIStepper
- [leetcode] 13. Roman to Integer