【Java Spring MVC项目异常解决】java.lang.RuntimeException: java.lang.NullPointerException

异常信息

[DEBUG] 2024-04-16 10:01:29,240 org.springframework.web.servlet.DispatcherServlet - GET "/smbmsForKD50_war_exploded/provider/delete?proid=18", parameters={masked}
[DEBUG] 2024-04-16 10:01:29,241 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped to public java.util.Map<java.lang.String, java.lang.String> cn.smbms.controller.provider.ProviderController.deleteProvider(java.lang.String)
[DEBUG] 2024-04-16 10:01:29,253 org.springframework.web.servlet.DispatcherServlet - Failed to complete request: java.lang.RuntimeException: java.lang.NullPointerException
[DEBUG] 2024-04-16 10:01:30,490 org.springframework.web.servlet.DispatcherServlet - GET "/smbmsForKD50_war_exploded/provider/delete?proid=18", parameters={masked}
[DEBUG] 2024-04-16 10:01:30,490 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped to public java.util.Map<java.lang.String, java.lang.String> cn.smbms.controller.provider.ProviderController.deleteProvider(java.lang.String)
[DEBUG] 2024-04-16 10:01:30,490 org.springframework.web.servlet.DispatcherServlet - Failed to complete request: java.lang.RuntimeException: java.lang.NullPointerException

原始代码:

	@RequestMapping("delete")
	@ResponseBody
	public Map<String, String> deleteProvider(@RequestParam("proid") String proId) {
		Map<String, String> resultMap = new HashMap<>();
		if (!StringUtils.isNullOrEmpty(proId)) {
			ProviderService providerService = new ProviderServiceImpl();
			int flag = providerService.deleteProviderById(proId);
			if (flag == 0) {
				resultMap.put("delResult", "true");
			} else if (flag == -1) {
				resultMap.put("delResult", "false");
			} else if (flag > 0) {
				resultMap.put("delResult", String.valueOf(flag));
			}
		} else {
			resultMap.put("delResult", "notexist");
		}
		return resultMap;
	}

异常原因

如果使用了@Resource注解,就不需要在方法内部手动创建ProvideService对象了,因为Spring会进行自动注入。

所以,可以将ProviderService providerService = new ProviderServiceImpl();这行代码删除掉,因为使用了@Resource注解后,Spring会负责为我们初始化providerService对象。这样就避免了因为手动创建对象二可能导致的空指针异常。

修改后代码:

	@RequestMapping("delete")
	@ResponseBody
	public Map<String, String> deleteProvider(@RequestParam("proid") String proId) {
		Map<String, String> resultMap = new HashMap<>();
		if (!StringUtils.isNullOrEmpty(proId)) {
			int flag = providerService.deleteProviderById(proId);
			if (flag == 0) {
				resultMap.put("delResult", "true");
			} else if (flag == -1) {
				resultMap.put("delResult", "false");
			} else if (flag > 0) {
				resultMap.put("delResult", String.valueOf(flag));
			}
		} else {
			resultMap.put("delResult", "notexist");
		}
		return resultMap;
	}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值