簡體   English   中英

春季MVC @RequestParams

[英]Spring MVC @RequestParams

這是網址: 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- 0800271c1b75

它被放入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);
    }
}

如果您看到visitUuid注釋,則visitUuid參數不存在@Request參數。

即使沒有該參數,上面的代碼也可以正常工作。 但是最近它拋出一個Exception,沒有visitUuid請求參數。 如果我添加@RequestParams("visitUuid")則解決方案很簡單。

但是我的問題是,即使我們沒有@RequestParamter映射,GET請求中的參數能否映射到Controller代碼上的適當變量。

否,則適當的映射注解( @RequestParam@PathVariable@ModelAttribute ,或@RequestBody )是必需的。 如果使用調試符號進行編譯(通常是默認設置),則可以省略參數的名稱 ,但是必須告訴Spring在哪里尋找該值。

還要注意,Spring有一個令人印象深刻的類型轉換系統,如果您的服務能夠(或可以重構)采用UUID參數而不是String ,則可以使用@RequestParameter UUID patientUuid

您可以在以下兩個選項中使用

@RequestParams(value = "visitUuid" ,  defaultValue = "yourDefaultValue")

//Or

@RequestParams(value = "visitUuid" ,  required=false)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM