2016-12-23 6 views
0

У меня есть параметр запроса, какКак извлечь параметр запроса в коллекцию значения имени

usrInfo: имя_файл = Firstname & LNAME = Lastname & компании = & addressLine1 = wewqe & addressLine2 = wqewqe & город = Qweqwe & страны = United + States

Я хочу извлечь значения для каждого имени.

Я написал ниже метод, но он не работает, когда нет значения для его соответствующей пары имен.

private String getRequestParamavalue(SlingHttpServletRequest request, String requestParameter, String requestParamName) { 

     String reqParamValue = null; 

     if (StringUtils.isNotBlank(request.getParameter(requestParameter))) { 

      String[] reqParams = request.getParameter(requestParameter).split("&"); 
      Map<String, String> requestParamMap = new HashMap<>(); 
      String value; 
      for (String param : reqParams) { 
       String name = param.split("=")[0]; 
       value = StringUtils.isEmpty(param.split("=")[1]) ? "" : param.split("=")[1]; 
       requestParamMap.put(name, value); 
      } 

      reqParamValue = requestParamMap.get(requestParamName); 

     } 

     return reqParamValue; 

    } 

Пожалуйста, дайте мне совет по этому вопросу. Благодарю.

+1

Если нет соответствующей пары имен. Проверьте длину параметра param.split ("="). –

+0

Возможный дубликат [Разбор строки URI в коллекции значений] (http://stackoverflow.com/questions/13592236/parse-a-uri-string-into-name-value-collection) – Misha

ответ

0

@Kali Попробуйте

 for (String param : reqParams) { 
      String name = param.split("=")[0]; 
      value = param.split("=").length == 1 ? "" : param.split("=")[1]; 
      requestParamMap.put(name, value); 
     } 
+0

спасибо @David it получил работу. – Kali

0

Почему бы просто не сделать request.getParameter (requestParamName), то HTTPServlet класс Родитель делает синтаксический анализ для вас.