直接上代码如下:

@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. ListBox控件的另一种数据绑定方式

    把DataTemplate防止ListBox中的绑定 <ListBox x:Name="ListBoxName"> <ListBox.ItemTemplate&g ...

  2. flex 弹性盒模型的一些例子;

    1.垂直居中 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  3. 【ElasticSearch】文档路由的原理

    ElasticSearch集群环境下新增文档如何确认该文档被分配到哪个分片中? 路由算法: ⾸先这肯定不会是随机的,否则将来要获取⽂档的时候我们就不知道从何处寻找了.实际上,这个过程是根据下⾯这个公式 ...

  4. vue.js中$emit的理解

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  5. 【原创】ansible常用模块整理

    一.Ansible模块帮助 ansible-doc -l # 列出 Ansible 支持的模块 ansible-doc ping # 查看该模块帮助信息 二.远程命令模块 2.1command com ...

  6. POJ2349二分+并查集,类似最小树的贪心

    题意:       给你n个点,你的任务是构建一颗通讯树,然后给你一个s表示可以选出来s个点两两通讯不花钱,就是费用是0,其他的费用就是两点的距离,有个要求就是其他的费用中最大的那个最小. 思路:   ...

  7. 0901-生成对抗网络GAN的原理简介

    0901-生成对抗网络GAN的原理简介 目录 一.GAN 概述 二.GAN 的网络结构 三.通过一个举例具体化 GAN 四.GAN 的设计细节 pytorch完整教程目录:https://www.cn ...

  8. 【hugo】- hugo 监听浏览器切换title

    hugo 博客 监听浏览器title 动态改变浏览器title标题 找到head.html themes/maupassant/layouts/partials/head.html 添加监听js 可以 ...

  9. [题解] CF786B Legacy

    前言 题目链接 题意 有 \(n\) 个点,\(q\) 次连边,以及起点 \(s\) .连边具体分三种: \(1\) \(v\) \(u\) \(w\) 从 \(v\) 到 \(u\) 连一条边. \ ...

  10. Zoho:SaaS行业的“紫色奶牛”

    以下文章来源于:中国软件网,作者王锦宝 蓝天白云的映衬下,一群黑白相间的奶牛在绿草场自由玩耍,这种田园牧歌场景看久了,总会引起审美疲劳.假如突然出现一头紫色奶牛,你肯定会眼前一亮,把所有注意力集中到紫 ...