添加店铺失败,
来源:3-5 前后端联调验证整体模块功能
慕UI0732386
2020-01-05 19:42:53
前端json转化为类时出现问题了,shop的属性都是null,只有区域和类别不为空,shopStr是有值
6回答
好帮手慕柯南
2020-01-06
同学你好!
你的数据没有问题呢
你的shopstr中本来就没有这三个值,没有打印输出正常
在页面也没有给这三个属性赋值,所以打印输出为null没有问题
以下位置shop为null,是因为你的转化语句还没有执行
数据库中没有数据,是指整条数据没有插入呢,还是某个字段没有值,如果整条数据都没有插入,你的控制台是否报错了呢?
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
慕UI0732386
提问者
2020-01-05
数据库里也没有数据,拜托老师看一下,感谢
慕UI0732386
提问者
2020-01-05
慕UI0732386
提问者
2020-01-05
@RequestMapping(value = "/registershop",method = RequestMethod.POST) @ResponseBody private Map<String, Object> registerShop(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); System.out.println(shop.getShopId()); System.out.println(shopStr); } catch (Exception e) { modelMap.put("success", false); modelMap.put("errMsg", e.getMessage()); return modelMap; } System.out.println(shop.getAdvice()); CommonsMultipartFile shopImg = null; CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver( request.getSession().getServletContext()); if (commonsMultipartResolver.isMultipart(request)) { MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request; shopImg = (CommonsMultipartFile) multipartHttpServletRequest.getFile("shopImg"); } else { modelMap.put("success", false); modelMap.put("errMsg", "上传图片不能为空"); return modelMap; } // 2.注册店铺 if (shop != null && shopImg != null) { PersonInfo owner = (PersonInfo) request.getSession().getAttribute("user"); owner.setUserId(1L); shop.setOwner(owner); ShopExecution se = null; try { se = shopService.addShop(shop, shopImg.getInputStream(), shopImg.getOriginalFilename()); if(se.getState() == ShopStateEnum.CHECK.getState()){ modelMap.put("success",true); //该用户可以操作的店铺列表 @SuppressWarnings("unchecked") List<Shop> shopList = (List<Shop>)request.getSession().getAttribute("shoplist"); if(shopList == null || shopList.size() == 0) { shopList = new ArrayList<Shop>(); } shopList.add(se.getShop()); request.getSession().setAttribute("shopList", shopList); }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", "请输入店铺信息"); return modelMap; } }
慕UI0732386
提问者
2020-01-05
public class ImageUtil { private static String basePath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); private static final SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); private static final Random r = new Random(); private static Logger logger = LoggerFactory.getLogger(ImageUtil.class); /** * 将CommonsMultipartFile转换成File类 * * @param cFile * @return */ public static File transferCommonsMultipartFileToFile(CommonsMultipartFile cFile) { File newFile = new File(cFile.getOriginalFilename()); try { cFile.transferTo(newFile); } catch (IllegalStateException e) { logger.error(e.toString()); e.printStackTrace(); } catch (IOException e) { logger.error(e.toString()); e.printStackTrace(); } return newFile; } /** * 处理缩略图,并返回新生成图片的相对值路径 * * @param thumbnailInputStream * @param targetAddr * @return */ public static String generateThumbnail(InputStream thumbnailInputStream, String fileName, String targetAddr) { // 获取不重复的随机名 String realFileName = getRandomFileName(); // 获取文件的扩展名如png,jpg等 String extension = getFileExtension(fileName); // 如果目标路径不存在,则自动创建 makeDirPath(targetAddr); // 获取文件存储的相对路径(带文件名) String relativeAddr = targetAddr + realFileName + extension; logger.debug("current relativeAddr is :" + relativeAddr); // 获取文件要保存到的目标路径 File dest = new File(PathUtil.getImgBasePath() + relativeAddr); logger.debug("current complete addr is :" + PathUtil.getImgBasePath() + relativeAddr); logger.debug("basePath is :" + basePath); // 调用Thumbnails生成带有水印的图片 try { Thumbnails.of(thumbnailInputStream).size(200, 200) .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File(basePath + "/watermark.jpg")), 0.25f) .outputQuality(0.8f).toFile(dest); } catch (IOException e) { logger.error(e.toString()); throw new RuntimeException("创建缩略图失败:" + e.toString()); } // 返回图片相对路径地址 return relativeAddr; } /** * 创建目标路径所涉及到的目录,即/home/work/xiangze/xxx.jpg, 那么 home work xiangze * 这三个文件夹都得自动创建 * * @param targetAddr */ private static void makeDirPath(String targetAddr) { String realFileParentPath = PathUtil.getImgBasePath() + targetAddr; File dirPath = new File(realFileParentPath); if (!dirPath.exists()) { dirPath.mkdirs(); } } /** * 获取输入文件流的扩展名 * * @param fileName * @return */ private static String getFileExtension(String fileName) { return fileName.substring(fileName.lastIndexOf(".")); } /** * 生成随机文件名,当前年月日小时分钟秒钟+五位随机数 * * @return */ public static String getRandomFileName() { // 获取随机的五位数 int rannum = r.nextInt(89999) + 10000; String nowTimeStr = sDateFormat.format(new Date()); return nowTimeStr + rannum; } public static void main(String[] args) throws IOException { Thumbnails.of(new File("/Users/baidu/work/image/xiaohuangren.jpg")).size(200, 200) .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File(basePath + "/watermark.jpg")), 0.25f) .outputQuality(0.8f).toFile("/Users/baidu/work/image/xiaohuangrennew.jpg"); } /** * storePath是文件的路径还是目录的路径, 如果storePath是文件路径则删除该文件, * 如果storePath是目录路径则删除该目录下的所有文件 * * @param storePath */ public static void deleteFileOrPath(String storePath) { File fileOrPath = new File(PathUtil.getImgBasePath() + storePath); if (fileOrPath.exists()) { if (fileOrPath.isDirectory()) { File files[] = fileOrPath.listFiles(); for (int i = 0; i < files.length; i++) { files[i].delete(); } } fileOrPath.delete(); } } }
慕UI0732386
提问者
2020-01-05
// 提交按钮的事件响应,分别对店铺注册和编辑操作做不同响应 $('#submit').click(function() { // 创建shop对象 var shop = {}; if (isEdit) { // 若属于编辑,则给shopId赋值 shop.shopId = shopId; } // 获取表单里的数据并填充进对应的店铺属性中 shop.shopName = $('#shop-name').val(); shop.shopAddr = $('#shop-addr').val(); shop.phone = $('#shop-phone').val(); shop.shopDesc = $('#shop-desc').val(); // 选择选定好的店铺类别 shop.shopCategory = { shopCategoryId : $('#shop-category').find('option').not(function() { return !this.selected; }).data('id') }; // 选择选定好的区域信息 shop.area = { areaId : $('#area').find('option').not(function() { return !this.selected; }).data('id') }; // 获取上传的图片文件流 var shopImg = $('#shop-img')[0].files[0]; // 生成表单对象,用于接收参数并传递给后台 var formData = new FormData(); // 添加图片流进表单对象里 formData.append('shopImg', shopImg); // 将shop json对象转成字符流保存至表单对象key为shopStr的的键值对里 formData.append('shopStr', JSON.stringify(shop)); // 获取表单里输入的验证码 var verifyCodeActual = $('#j_captcha').val(); if (!verifyCodeActual) { $.toast('请输入验证码!'); return; } formData.append('verifyCodeActual', verifyCodeActual); // 将数据提交至后台处理相关操作 $.ajax({ url : (isEdit ? editShopUrl : registerShopUrl), type : 'POST', data : formData, contentType : false, processData : false, cache : false, success : function(data) { if (data.success) { $.toast('提交成功!'); if (!isEdit) { // 若为注册操作,成功后返回店铺列表页 window.location.href = "/o2o/shopadmin/shoplist"; } } else { $.toast('提交失败!' + data.errMsg); } // 点击验证码图片的时候,注册码会改变 $('#captcha_img').click(); } }); });
相似问题