请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

上下架操作失败(上传图片不能为空)

图片描述
图片描述
在调试上下架功能的时候发现未能进入if (multipartResolver.isMultipart(request)) 的判断,返回错误信息,上传图片不能为空。而在测试编辑功能的时候不上传图片则可以进入if判断。

正在回答

2回答

翔仔 2019-02-12 16:20:46

哈,不好意思,昨晚熬夜太严重短路了,代码逻辑应该是这样的

try {
			if (multipartResolver.isMultipart(request)) {
				thumbnail = handleImage(request, thumbnail, productImgList);
			}
		} catch (Exception e) {
			modelMap.put("success", false);
			modelMap.put("errMsg", e.toString());
			return modelMap;
		}

这样才不会去检查如果request里没图片就卡住

0 回复 有任何疑惑可以回复我~
  • 提问者 哎呦喂啊哈 #1
    强迫症解除,谢谢老师,不过为什么这么一写就好了,multipartResolver.isMultipart(request)检测不到有上传域不是应该还是会得到false的结果不会进入if里面嘛
    回复 有任何疑惑可以回复我~ 2019-02-12 16:32:40
  • 翔仔 回复 提问者 哎呦喂啊哈 #2
    针对上下架,if (multipartResolver.isMultipart(request))肯定会返回false,所以不用处理false的逻辑就可以了:)
    回复 有任何疑惑可以回复我~ 2019-02-12 16:37:24
  • 提问者 哎呦喂啊哈 #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-02-12 16:53:30
翔仔 2019-02-12 16:08:44

同学好,上下架调用的是modifyShop吧?怎么感觉同学这个是registerShop的逻辑。。

同学可以看看我的

	@RequestMapping(value = "/modifyshop", method = RequestMethod.POST)
	@ResponseBody
	private Map<String, Object> modifyShop(HttpServletRequest request) {
		Map<String, Object> modelMap = new HashMap<String, Object>();
		if (!CodeUtil.checkVerifyCode(request)) {
			modelMap.put("success", false);
			modelMap.put("errMsg", "输入了错误的验证码");
			return modelMap;
		}
		// 1.接收并转化相应的参数,包括店铺信息以及图片信息
		String shopStr = HttpServletRequestUtil.getString(request, "shopStr");
		ObjectMapper mapper = new ObjectMapper();
		Shop shop = null;
		try {
			shop = mapper.readValue(shopStr, Shop.class);
		} catch (Exception e) {
			modelMap.put("success", false);
			modelMap.put("errMsg", e.getMessage());
			return modelMap;
		}
		CommonsMultipartFile shopImg = null;
		CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(
				request.getSession().getServletContext());
		if (commonsMultipartResolver.isMultipart(request)) {
			MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
			shopImg = (CommonsMultipartFile) multipartHttpServletRequest.getFile("shopImg");
		}
		// 2.修改店铺信息
		if (shop != null && shop.getShopId() != null) {
			ShopExecution se;
			try {
				if (shopImg == null) {
					se = shopService.modifyShop(shop, null);
				} else {
					ImageHolder imageHolder = new ImageHolder(shopImg.getOriginalFilename(), shopImg.getInputStream());
					se = shopService.modifyShop(shop, imageHolder);
				}
				if (se.getState() == ShopStateEnum.SUCCESS.getState()) {
					modelMap.put("success", true);
				} else {
					modelMap.put("success", false);
					modelMap.put("errMsg", se.getStateInfo());
				}
			} catch (ShopOperationException e) {
				modelMap.put("success", false);
				modelMap.put("errMsg", e.getMessage());
			} catch (IOException e) {
				modelMap.put("success", false);
				modelMap.put("errMsg", e.getMessage());
			}
			return modelMap;
		} else {
			modelMap.put("success", false);
			modelMap.put("errMsg", "请输入店铺Id");
			return modelMap;
		}
	}


0 回复 有任何疑惑可以回复我~
  • 提问者 哎呦喂啊哈 #1
    老师,上下架是调用的modifyProduct的逻辑,你贴的是modifyShop的。而且addProduct和modifyProduct的逻辑差不多。
    回复 有任何疑惑可以回复我~ 2019-02-12 16:13:47
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号