使用@ResponseBody后返回500错误

       在springmvc+mybatis的项目中,利用mybatis分页插件mybatis-paginator进行分页查询,结果出现了500异常,后端又没有明显的报错。

原来的写法,返回Map对象,由springmvc里面的机制转为json对象,这样就会导致,在转json过程中的报错,都隐藏了,无法抛出,前端获取不到正确的数据,

最后就出现了500的异常。

	@RequestMapping(value = "/query")
	@ResponseBody
	public Map<String, Object> data(HttpServletRequest request, HttpServletResponse response, CreditloanInfoParams params) {
		Map<String, Object> data = new HashMap<String, Object>();
		if(params==null){
			params=new CreditloanInfoParams();
		}
		PageList<CreditloanInfo> list = (PageList<CreditloanInfo>) creditloanInfoService.getCreditloanInfoListData(params);
		data.put("total", list.getPaginator().getTotalCount());
		data.put("rows", list);
		return data;
	}


  改成使用fastJson主动转化为json格式的字符串,这样的好处是,转json过程中如果出现错误,会有很明确的提示。   

	@SuppressWarnings("unchecked")
	@RequestMapping(value = "/query")
	@ResponseBody
	public String data(HttpServletRequest request, HttpServletResponse response, BlackParams params) {
		//Map<String, Object> data = new HashMap<String, Object>();
		/*PageList<Blacklist> blackDatas = (PageList<Blacklist>) blackService.getPageData(params);
		data.put("total", blackDatas.getPaginator().getTotalCount());
		data.put("rows", blackDatas);*/
		//blackService.getPageData(params);
/*		Map data = new HashMap();
		PageList<Blacklist> blackDatas = blackService.getBlackListData(params);
		data.put("total", blackDatas.getPaginator().getTotalCount());
		data.put("rows", blackDatas);*/
		return JSON.toJSONString(blackService.getPageData(params));
	}

最后发现是转json中出现了空指针异常。修复后,问题解决。





@ResponseBody 注解用于将方法的返回值直接作为 HTTP 响应的内容返回给客户端。它通常用于 RESTful API 的开发中,可以方便地将方法的返回值转换为 JSON 或其他格式的数据,并发送给客户端。 当你在使用 @ResponseBody 注解时,如果它在代码中出现了红色波浪线或错,通常是因为缺少相关的依赖或配置问题。以下是一些可能导致该问题的原因和解决方法: 1. 缺少相关的依赖:确保你的项目中已经引入了 Spring MVC 相关的依赖,例如 spring-webmvcspring-boot-starter-web。 2. 项目配置问题:检查你的项目配置文件(如 application.properties 或 application.yml)中是否正确配置了 Spring MVC 相关的配置项,特别是关于 JSON 格式转换的配置。 3. 控制器类未被正确扫描:确保你的控制器类被正确地扫描和注册到 Spring 容器中。可以通过 @Controller 或 @RestController 注解来标记控制器类,并且确保使用了正确的包扫描配置。 4. 方法签名问题:确保被 @ResponseBody 注解标记的方法具有正确的返回类型。常见的返回类型包括 ResponseEntity、ModelAndView、String(作为视图名称)以及其他对象类型(会自动转换为 JSON)。 5. 配置冲突:如果你同时使用了其他返回值处理方式(如视图解析器),可能会与 @ResponseBody 注解冲突。在这种情况下,可以考虑使用@RestController 注解替代 @Controller 注解。 如果以上方法都无法解决问题,建议提供更多的错误信息或代码片段,以便更好地帮助你解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斗者_2013

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值