一、报错内容
Circular view path [index]: would dispatch back to the current handler URL [/login/index] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)
解决方法:把@Controller改成@RestController
@RestController注解相当于@ResponseBody + @Controller合在一起的作用。
在@Controller注解中,返回的是字符串或者是字符串匹配的模板名称,即直接渲染视图,与html页面配合使用的,java后端的代码要结合html的情况进行渲染,使用model对象(或者modelandview)的数据将填充user视图中的相关属性,然后展示到浏览器;而在@RestController中,返回的应该是一个对象,即return一个user对象,这时,在没有页面的情况下,也能看到返回的是一个user对象对应的json字符串。
二、报错内容
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: No primary or default constructor found for interface java.util.List] with root cause
解决方法:这是传入List集合,传入参数出错的问题,可以通过正确的注解传参。
方式一:直接在路径上传入参数
/**
* 批量删除用户
* http://localhost:8080/springboot_mybatis/deleteUsers?ids=8&ids=9
* @param ids
*/
@DeleteMapping("/deleteUsers")
public void deleteUsers(@RequestParam List<Long> ids) {
userService.removeByIds(ids);
}
方式二:在Postman传入Json数组形式
/**
* 批量删除
* @param ids
*/
@DeleteMapping("/deleteOrders")
//集合也是一个可变数组
public void deleteOrders(@RequestBody List<Long> ids) {
orderService.removeByIds(ids);
}
三、报错内容
Requierd Integer parameter 'xxx' is not present
遇到请求400 bad request,大概了解到是前端传递参数有问题。
出现了 Status Code:Http 400 Bad Request 错误的一种原因就是:参数匹配。
包括以下两方面:
1、 请求时没有传递必须的参数;
2、 传递的参数类型不匹配,比如id需为 int型,若传到后台的是string型则也会出现类似的错误。
情形一:若前端传入Json格式,后端使用
@RequestBody Order order
进行接收。
情形二:若前端传入正常表单数据,后端使用
@RequestParam Long id
进行接收。
情形三: 若参数类型不是json格式,也不是使用表单类型提交,参数需要跟到请求url后面,则后台使用@PathVariable进行获取参数。