同一个Controller里的同一个Service实例,在当前的Controller里的不同方法中状态不一致
直接上代码如下:
@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里的不同方法中状态不一致的更多相关文章
- C# WinForm 单例模式(例:同一个窗体只创建一次实例)
//C# WinForm 单例模式(例:同一个窗体只创建一次实例) //打开窗体的事件: Form3 f = Form3.InstanceObject() ; //实例化窗体 f.Focus(); / ...
- 同一个PC只能运行一个应用实例(考虑多个用户会话情况)
原文:同一个PC只能运行一个应用实例(考虑多个用户会话情况) class Program { private static Mutex m; [STAThread] static void Main( ...
- SAP 同一个序列号可以同时出现在2个不同的HU里?
SAP 同一个序列号可以同时出现在2个不同的HU里? 答案是可以的. 如下图示,HU 180141003288里的序列号11810010540121, 而序列号11810010540121已经出现在另 ...
- angularJS 服务-$provide里factory、service方法
当你初试 Angular 时,很自然地就会往 controller 和 scope 里堆满不必要的逻辑.一定要早点意识到,controller 这一层应该很薄:也就是说,应用里大部分的业务逻辑和持久化 ...
- 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 ...
- 在普通Java类里使用spring里注入的service、dao等
版权声明:本文为博主武伟峰原创文章,转载请注明地址http://blog.csdn.net/tianyaleixiaowu. 在spring管理的web项目里,譬如Struts和spring的项目,配 ...
- 在Excel里如何将多个工作簿合并到一个工作簿中
在Excel里如何将多个工作簿合并到一个工作簿中 当你必须将多个工作簿合并到一个工作簿时,你遇到过麻烦吗?最让人心烦的就是需要合并的工作簿里有很多张工作表.有人能推荐方法解决这个问题吗? 利用VBA ...
- @有两个含义:1,在参数里,以表明该变量为伪参数 ,在本例中下文里将用@name变量代入当前代码中2,在字串中,@的意思就是后面的字串以它原本的含义显示,如果不
@有两个含义:1,在参数里,以表明该变量为伪参数 ,在本例中下文里将用@name变量代入当前代码中 2,在字串中,@的意思就是后面的字串以它原本的含义显示,如果不加@那么需要用一些转义符\来显示一些特 ...
- 利用Java Service Wrapper将java项目添加到windows服务中
1.web项目,即tomcat/resin添加至window系统服务,步骤如下:第一步:找到tomcat的bin目录,如:D:\apache-tomcat-8.0.26\bin第二步:打开cmd,cd ...
随机推荐
- 《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
一.利用回归树实现分类 分类也可以用回归树来做,简单说来就是训练与类别数相同的几组回归树,每一组代表一个类别,然后对所有组的输出进行softmax操作将其转换为概率分布,然后再通过交叉熵或者KL一类的 ...
- WordPress 缩率图学习笔记
WordPress 缩率图学习笔记 Wordpress在生成缩略图的过程中,有两种不同的规则 缩放模式:缩放模式就是将图片等比例缩小,且新生成的缩略图长度或高度两者之中,有一个是你设置的缩略图的尺寸 ...
- hdu4284 dfs+floyd
题意: 给你n个城市,m条边,要有h个必须旅游和打工的城市,问你能不能从1把所有必须的h个城市全部旅游并且打工完... 思路: 先一遍floyd跑出全局最短路,然后暴力枚举出打 ...
- 逆向工程第005篇:跨越CM4验证机制的鸿沟(下)
一.前言 本文是逆向分析CM4系列的最后一篇,我会将该游戏的序列号验证机制分析完毕,进而编写出注册码生成器. 二.分析第二个验证循环 延续上一篇文章的内容,来到如下代码处: 图1 上述代码并没有特别需 ...
- drozer源码学习:app
源码下载:https://github.com/mwrlabs/drozer:模块的源码位于src.drozer.modules,根据模块名来划分文件夹: app.auxiliary.exploit. ...
- C#-窗体移动
#region 窗体移动API [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [Dll ...
- 使用 Azure Container Registry 储存镜像
Azure Container Registry(容器注册表)是基于 Docker Registry 2.0规范的托管专用 Docker 注册表服务. 可以创建和维护 Azure 容器注册表来存储与管 ...
- 【SpringMVC】添加操作时返回400
本博客老魏原创,如需转载请留言 问题描述: springmvc向数据库添加新的记录时,发生400错误,控制台没有抛出异常. 问题原因: 视图中的提交数据的某一个字段不不匹配导致. 解决方法: 不要怀疑 ...
- java+selenium使用JS、键盘滑动滚动条
本篇文章介绍如何使用JS和键盘对象对页面进行滑动滚动条-------------主要针对java做自动化测试的同学 一:使用键盘对象操作滚动条 //导包 import org.openqa.selen ...
- HashMap 的数据结构
目录 content append content HashMap 的数据结构: 数组 + 链表(Java7 之前包括 Java7) 数组 + 链表 + 红黑树(从 Java8 开始) PS:这里的& ...