问题复现:
value="querySetmealByCustomersno", method=RequestMethod.POST) (value="查询客户套餐类型") (publicPmpResultquerySetmealByCustomersno(Stringcustomersno){}
运行时出现错误:
Missing URI template variable ‘customersno‘ for method parameter of type String
问题原因:路径中没有对应的参数或者参数名不对,需要定义好参数
解决方案: 在url路径中定义参数。
解决方案一:
value="querySetmealByCustomersno/{customersno}", method=RequestMethod.POST) (value="查询客户套餐类型") (publicPmpResultquerySetmealByCustomersno(Stringcustomersno){}
问题原因:
如果使用的是Vue+Springboot前后端分离,想要传递数据,传递的url可能是:http://localhost:8080/querySetmealByCustomersno?customersno=202320032003
那么此时你使用的应当是@RequestParam,而不是@PathVariable
解决方案二:
value="querySetmealByCustomersno", method=RequestMethod.POST) (value="查询客户套餐类型") (publicPmpResultquerySetmealByCustomersno(Stringcustomersno){}
PathVariable和RequestParam的区别
区别在于一个是用?,一个使用/进行传输数据
PathVariable和RequestParam的使用
方案一:http://localhost:8080/querySetmealByCustomersno/customersno=202320032003
方案二:http://localhost:8080/querySetmealByCustomersno?customersno=202320032003
总结:
@PathVariable
从路径中获取变量,也就是把路径当做变量。
使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId},这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。
@RequestParam
从请求中获取参数
常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String–> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;