簡體   English   中英

JAX-RS混合@FormParam和MultivaluedMap <String, String> formParams

[英]JAX-RS Mixing @FormParam and MultivaluedMap<String, String> formParams

我有一個方法可以返回父記錄的所有記錄子(例如文檔和行):

public Datasource<Son> getSonsFromParent( @FormParam(value = "idparent") Long idparent,
        MultivaluedMap<String, String> formParams) throws Exception;

我有一個眾所周知的參數“ idparent”。 我想簡單地使用@FormParam獲得此參數。 將這種方法暴露給其他人很有用:他們知道需要“同父異母”。

另外,例如,我有許多未定義的參數可用於排序和過濾數據源

 sort[0]=name

  sort[1]=surname

  filter[0][field]=name

  filter[0][operator]=equal

  filter[0][value]=Marc

問題是: 使用@FormParam ,多值映射始終為空。

如何將@FormParam@FormParam混合在一起?

您不能在同一資源方法中使用@Formparam, MultiValuedMap, @FormDataParam,@BeanParam JAX-RS不知道哪個是映射請求中信息的正確對象。

無論如何,我不明白為什么您不只是使用MultiValuedMap<String,String> formParams並僅驗證 idParent

使用@Formparam 不會使需要這樣的參數,你負責的這個通過您的代碼實現:

public Datasource<Son> getSonsFromParent( MultivaluedMap<String, String> formParams) {

  String idParent = formParams.getFirst("idparent");

  if(idParent == null || idParent.isEmpty()){
     // return .... [idParent is required] 400 Bad Request
  }
}

如果您打算向客戶公開此類參數,則還意味着您在此API的文檔中將公開所有參數,而不僅僅是必需的權利?

暫無
暫無

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

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