Это URL: https://192.168.33.10/openmrs/ws/rest/v1/bahmnicore/bahmniencounter/search?includeAll=false&patientUuid=210d0739-7937-4fb7-8f53-752f393cb4b7&visitUuid=c1c26908-3f10-11e4-adec-0800271c1b75Spring MVC @RequestParams
Он приземлился в 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
Params нет параметра visitUuid
,
Приведенный выше код использовался для работы, даже если параметр отсутствовал. Но недавно он выбрасывает исключение, нет параметра запроса для visitUuid
. Решение просто, если я добавляю @RequestParams("visitUuid")
, он работает.
Но мой вопрос: может ли параметр в запросе GET сопоставляться с соответствующими переменными в коде контроллера, даже если у нас нет отображения @RequestParamter
.
Да только тогда, когда компилятор компилирует с отладочной информацией, иначе она не будет работать. С информацией об отладке имена параметров сохраняются еще, они оптимизированы и больше не будут соответствовать. Как правило, лучше просто добавить '@ RequestParam', даже если это будет только для целей документации. –
@ M.Deinum Отладочные символы означают, что вы можете опустить это имя, а не полностью опускать аннотацию. – chrylis
Но код действительно был без слов без аннотации Spring. Сейчас он только начинает терпеть неудачу. Также эта вещь работает на других машинах без аннотации. –