请叫我老大 2016-03-31 17:19 采纳率: 0%
浏览 3957
已结题

if 嵌套过多 求大神指点

 @RequestMapping(value = "/add", produces = "text/plain;charset=UTF-8")
    public ModelAndView AddBrands(HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        ModelMap map = new ModelMap();

        try {

            //表单元素名
            String[] formElements = { "bName", "bRemark" };
            //获取表单元素
            Map<String, Object> elementsValues = FileUpload.getFormElements(request, formElements);
            //上传结果
            Map<String, Object> values = null;
            //实体
            Brands brands = new Brands();
                //判断表单元素是否为空 msg 存储错误信息
                if (null != elementsValues.keySet() && null != elementsValues.get("msg")) {
                    map.addAttribute("msg", EncodingTools.encodeStr(elementsValues.get("msg").toString()));
                } else {
                    //实体赋值
                    brands.setbName(elementsValues.containsKey("bName") ? elementsValues.get("bName").toString() : "");
                    brands.setbRemark(elementsValues.containsKey("bRemark") ? elementsValues.get("bRemark").toString() : "");
                    //保存实体成功 mybatis 返回成功的ID
                    if (0 < brandsService.addBrands(brands) && null != brands.getbId() && 0 != brands.getbId()) {
                        //拼接路径
                        StringBuffer filePath = new StringBuffer(request.getSession().getServletContext().getRealPath("\\"));
                        filePath.append("upload\\image\\logo\\");
                        //因为这里的路径需要保存成功的实体ID
                        filePath.append(brands.getbId() + "\\");
                        String[] fileType = { "image/png" };
                        //取出读出表单时存储的FileItem
                        FileItem item = (FileItem) elementsValues.get("item");
                        //上传图片
                        values = FileUpload.uploadFile(item, 1, fileType, filePath.toString());
                        //判断上传是否成功
                        if (null != values.keySet() && null == values.get("msg")) {
                            //得到上传成功后的文件名// 这可以减少一个判断 在页面多加一个input 存储表单类型 生成名称 先保存 再上传
                            String fileName = values.get("fileName").toString();
                            brands.setbIconPath(fileName);
                            //更新
                            if(0 < brandsService.editBrands(brands)){
                                //成功
                            }else{
                                //失败
                            }
                        } else if (null != values.get("msg")) {
                            map.addAttribute("msg", EncodingTools.encodeStr("上传图片失败!"));
                        }
                        map.addAttribute("msg", EncodingTools.encodeStr("添加成功!"));
                        //return new ModelAndView("redirect:/brands/findAll", map);
                    } else {
                        map.addAttribute("msg", EncodingTools.encodeStr("插入数据失败!"));
                    }
                }

        } catch (Exception e) {
            e.printStackTrace();
            map.addAttribute("msg", EncodingTools.encodeStr("上传文件失败!"));
        }
        return new ModelAndView("redirect:/view/admin/brands/add_brands.jsp",
                map);
    }
  • 写回答

7条回答

  • 毕小宝 博客专家认证 2016-03-31 22:55
    关注

    看你的代码,代码分支还是很明确的,就是判断上传代码是否成功这段比较长,建议把第一个if的方法体的内容抽离成一个私有方法,那么你的if逻辑块就相对清晰多了。而且抽离的部分代码量也不大,只是都放一块导致你的if操作可读性变差了。

    评论

报告相同问题?

悬赏问题

  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥30 用arduino开发esp32控制ps2手柄一直报错
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿