2016-12-23 2 views
0

J'ai un paramètre de requête commeComment extraire le paramètre de demande dans la collecte de valeur du nom

usrInfo: FNAME = prenom & lname = nom & entreprise = & AddressLine1 = wewqe & AddressLine2 = wqewqe & ville = qweqwe & pays = United + States

Je souhaite extraire des valeurs pour chaque nom.

J'ai écrit la méthode ci-dessous mais elle échoue lorsqu'il n'y a pas de valeur pour la paire de noms correspondante.

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; 

    } 

S'il vous plaît, donnez-moi un conseil à ce sujet. Merci.

+1

En l'absence de paire de noms correspondante. Vérifiez la longueur de param.split ("="). –

+0

Copie possible de [Analyser une chaîne d'URI dans la collection Name-Value] (http://stackoverflow.com/questions/13592236/parse-a-uri-string-into-name-value-collection) – Misha

Répondre

0

@Kali Essayez cette

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

merci @David a travaillé. – Kali

0

Pourquoi ne pas simplement faire request.getParameter (requestParamName), la classe parente HTTPServlet fait l'analyse syntaxique pour vous.