直接上代码如下:

@Controller
@RequestMapping("/views/information")
public class PubContentController extends BaseController{

  @Autowired
      private ContentCategoryService contentCategoryService;

  /**
     * 新增资讯
     *
     * @param pubContent
     * @param request
     * @param response
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/pubContent_add", method = RequestMethod.POST)
    @AuthAnnotation(authStr = "func_news_add")
    @LogAnnotation(module = "资讯管理", act = "新增")
    @ResponseBody
    public Object add(@ModelAttribute("pubContent") PubContent pubContent, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        String currUserId = currUserId(request);
        String title = pubContent.getTitle().trim();
    
        if (StringHelper.isEmpty(title, true))
            throw new ParameterException(MsgConstant.EXCEPTION_NAME_NULL);
        
        //根据分类ID获取资讯分类,再判断是一级或二级分类
        String categoryId = pubContent.getSubid();
        Map<String,Object> params = Maps.newConcurrentMap();
        if (!StringHelper.isEmpty(categoryId, true)){
            params.put("id", categoryId);
        }else{
            throw new ParameterException(MsgConstant.EXCEPTION_CATEGORYID_NULL);
        }    
        ContentCategory category = contentCategoryService.get("get", params);
        
        String id = category.getId();
        //父id
        String pid = category.getPid();
        
        if(StringHelper.isEmpty(pid, true) || pid.equals("0") ){
            //没有父id,是一级分类
            //设置一级分类id
            pubContent.setCid(id);
            //设置二级分类id
            pubContent.setSubid("");
        }else{
            //有父id,是二级分类
            //设置一级分类id
            pubContent.setCid(pid);
            //设置二级分类id
            pubContent.setSubid(id);
        }

        pubContent.setCreateBy(currUserId);
        pubContent.setUpdateBy(currUserId);
        int addid= pubContentService.insert(pubContent);

        if (addid <= 0) {
            return new Result(CodeConstant.RETCODE_500, null, null, MsgConstant.ERROR);
        }
        //更新新上传的附件
        uploadPubAttachment(request, response, pubContent.getId()+"");
        CheckLog checkLog=new CheckLog();
        checkLog.setPubid(addid);
        checkLog.setCreateBy(currUserId);
        checkLog.setNote("");
        checkLog.setStatus(0);
        checkLog.setUserName(currUser(request).getUserName());
        checkLogService.insert(checkLog);
        return new Result(CodeConstant.RETCODE_200, null, null, MsgConstant.SUCCESS);
    }

  /**
     * 获取
     *
     * @param id
     * @return category
     */
    @RequestMapping(value = "/get_Category", method = RequestMethod.POST)
    @ResponseBody
    private ContentCategory get_Category(@RequestParam(value = "id", required = true) String id,
            HttpServletRequest request,
            HttpServletResponse response, Model model)throws Exception {
        Map<String,Object> params = Maps.newConcurrentMap();
        if (!StringHelper.isEmpty(id, true)){
            params.put("id", id);
        }    
        ContentCategory category = contentCategoryService.get("get", params);
        return category;
    }

}

带下划线的service是同一个service,绿色代码处的是没有问题,在红色代码处出现java.lang.NullPointerException异常问题,

后面查看对象,id是有值的, params的Map也是有值的,最后发现 contentCategoryService 对象是空的,找了好久都没有发现

是什么问题导致了contentCategoryService 是空的,而调用另一个方法的contentCategoryService 是有实体对象的没有任何问题,

最后请教大神指点,经过多次的测试发现原来是 访问权限的问题,后一个contentCategoryService 为空的方法是访问权限修饰符是private,

不为空的方法是访问权限修饰符是public,所以导致了contentCategoryService为空,一直空指针异常。(自己排除错误的时候一直没有

注意到访问权限修饰符)修改了修饰符就解决了问题。

/**
     * 获取
     *
     * @param id
     * @return category
     */
    @RequestMapping(value = "/get_Category", method = RequestMethod.POST)
    @ResponseBody
    public ContentCategory get_Category(@RequestParam(value = "id", required = true) String id,
            HttpServletRequest request,
            HttpServletResponse response, Model model)throws Exception {
        Map<String,Object> params = Maps.newConcurrentMap();
        if (!StringHelper.isEmpty(id, true)){
            params.put("id", id);
        }    
        ContentCategory category = contentCategoryService.get("get", params);
        return category;
    }

复制粘贴,排除错误的时候记得要检查权限修饰的

同一个Controller里的同一个Service实例,在当前的Controller里的不同方法中状态不一致的更多相关文章

  1. C# WinForm 单例模式(例:同一个窗体只创建一次实例)

    //C# WinForm 单例模式(例:同一个窗体只创建一次实例) //打开窗体的事件: Form3 f = Form3.InstanceObject() ; //实例化窗体 f.Focus(); / ...

  2. 同一个PC只能运行一个应用实例(考虑多个用户会话情况)

    原文:同一个PC只能运行一个应用实例(考虑多个用户会话情况) class Program { private static Mutex m; [STAThread] static void Main( ...

  3. SAP 同一个序列号可以同时出现在2个不同的HU里?

    SAP 同一个序列号可以同时出现在2个不同的HU里? 答案是可以的. 如下图示,HU 180141003288里的序列号11810010540121, 而序列号11810010540121已经出现在另 ...

  4. angularJS 服务-$provide里factory、service方法

    当你初试 Angular 时,很自然地就会往 controller 和 scope 里堆满不必要的逻辑.一定要早点意识到,controller 这一层应该很薄:也就是说,应用里大部分的业务逻辑和持久化 ...

  5. spring整合mybatis错误:Could not autowire field: com.kjczwl.ssm.service.ItemsService com.kjczwl.ssm.controller.ItemsController.itemsservice;

    运行环境:jdk1.7.0_17+tomcat 7 + spring:3.2.0 +mybatis:3.2.7+ eclipse 错误:Could not autowire field: com.kj ...

  6. 在普通Java类里使用spring里注入的service、dao等

    版权声明:本文为博主武伟峰原创文章,转载请注明地址http://blog.csdn.net/tianyaleixiaowu. 在spring管理的web项目里,譬如Struts和spring的项目,配 ...

  7. 在Excel里如何将多个工作簿合并到一个工作簿中

    在Excel里如何将多个工作簿合并到一个工作簿中 当你必须将多个工作簿合并到一个工作簿时,你遇到过麻烦吗?最让人心烦的就是需要合并的工作簿里有很多张工作表.有人能推荐方法解决这个问题吗? 利用VBA ...

  8. @有两个含义:1,在参数里,以表明该变量为伪参数 ,在本例中下文里将用@name变量代入当前代码中2,在字串中,@的意思就是后面的字串以它原本的含义显示,如果不

    @有两个含义:1,在参数里,以表明该变量为伪参数 ,在本例中下文里将用@name变量代入当前代码中 2,在字串中,@的意思就是后面的字串以它原本的含义显示,如果不加@那么需要用一些转义符\来显示一些特 ...

  9. 利用Java Service Wrapper将java项目添加到windows服务中

    1.web项目,即tomcat/resin添加至window系统服务,步骤如下:第一步:找到tomcat的bin目录,如:D:\apache-tomcat-8.0.26\bin第二步:打开cmd,cd ...

随机推荐

  1. 03- Linux目录与文件进阶操作

    第三课 目录与文件进阶操作cat (一次性全部输出文件内容)   cat -n 文件名 显示行号   cat -b 文件名 空行不显示行号less (分页显示,可以上下翻页,光标键上下键,PageUp ...

  2. poj1182 and 携程预赛2第一题 带权并查集

    题意:       动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A.  现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底 ...

  3. Portswigger web security academy:XML external entity (XXE) injection

    Portswigger web security academy:XML external entity (XXE) injection 目录 Portswigger web security aca ...

  4. javaScript的成长之路【何为函数,面向对象又是啥!!!】

  5. 集成Spring Data JPA

    1.Spring Data JPA简介 Spring Data是一个用于简化数据访问,并支持云服务的开源框 使用完成Spring Data JPA对user表的CRUD操作. 2.步骤 1.创建工程勾 ...

  6. 理解微信小程序的双线程模型

    有过微信小程序开发经验的朋友应该都知道"双线程模型"这个概念,本文简单梳理一下双线程模型的一些科普知识,学识浅薄,若有错误欢迎指正. 我以前就职于「小程序·云开发」团队,在对外的一 ...

  7. 解决Latex输出PDF纸张自适应大小及中文无法显示问题

    遗留的问题 之前我们进行了基于texlive定制chemfig化学式转换Python服务镜像,虽然完成pdf的输出服务改造,但是输出效果并不是太好,如下图: 这个图有两个比较严重问题 不支持中文 空白 ...

  8. 排坑&#183;IPhone&IOS中不兼容正则中的断言匹配

    阅文时长 | 1.14分钟 字数统计 | 1834.4字符 主要内容 | 1.问题切入 2.什么是断言匹配 3.断言匹配的替换方案 4.声明与参考资料 『排坑·IPhone&IOS中不兼容正则 ...

  9. 重新整理 .net core 实践篇————依赖注入应用[二]

    前言 这里介绍一下.net core的依赖注入框架,其中其代码原理在我的另一个整理<<重新整理 1400篇>>中已经写了,故而专门整理应用这一块. 以下只是个人整理,如有问题, ...

  10. 最全的go语言的时间格式

    该文可以快速在Go语言中获得时间的计算. 在Go中获取时间 如何获取当前时间 now := time.Now() fmt.Printf("current time is :%s", ...