它落入了Spring MVC的控制器方法 -
@RequestMapping(method = RequestMethod.GET, value = "search")
@ResponseBody
public List<BahmniDiagnosisRequest> search(@RequestParam("patientUuid") String patientUuid, @RequestParam(value = "fromDate", required = false) String date, String visitUuid) throws Exception {
if (visitUuid != null) {
return bahmniDiagnosisService.getBahmniDiagnosisByPatientAndVisit(patientUuid, visitUuid);
} else {
return bahmniDiagnosisService.getBahmniDiagnosisByPatientAndDate(patientUuid, date);
}
}
如果您看到@Request
参数的弹簧注释visitUuid
参数不存在。
即使参数不存在,上面的代码也可以工作。但最近它抛出了一个Exception,visitUuid
没有请求参数。
如果我添加它@RequestParams("visitUuid")
,解决方案很简单。
但我的问题是,即使我们没有@RequestParamter
映射,GET请求中的can参数也会映射到Controller代码上的相应变量。
答案 0 :(得分:0)
不,需要适当的映射注释(@RequestParam
,@PathVariable
,@ModelAttribute
或@RequestBody
)。如果使用调试符号(这是通常的默认值)进行编译,则可以省略参数的名称,但是您必须告诉Spring在哪里查找值。
另请注意,Spring有一个令人印象深刻的类型转换系统,如果您的服务能够(或可以重构)使用UUID
参数而不是String
,您可以使用{ {1}}。
答案 1 :(得分:0)
您可以使用以下任一选项
@RequestParams(value = "visitUuid" , defaultValue = "yourDefaultValue")
//Or
@RequestParams(value = "visitUuid" , required=false)