2011-08-24 4 views
0

모든 값을 문자열로 가져 오려고합니다. 그것을 어떻게 얻을 수 있습니까?해시 맵에서 키 - 값 쌍의 값을 얻으려면 어떻게해야합니까?

+0

을 다음과

public static String toQueryString(Map<String, String[]> params) { StringBuilder queryString = new StringBuilder(); for (Entry<String, String[]> param : params.entrySet()) { for (String value : param.getValue()) { if (queryString.length() > 0) { queryString.append("&amp;"); } queryString .append(URLEncoder.encode(param.getKey(), "UTF-8")) .append("=") .append(URLEncoder.encode(value, "UTF-8")); } } return queryString.toString(); } 

사용이 당신이'String'보다는'StringBuffer'에'newParams [I]'구문 분석 할 수 있음. –

+0

Java 클래스가 아닌 JSP 파일에 Java 코드를 작성해도 JSP 문제가되지는 않습니다. JSP 태그를 Java 태그로 바꿨습니다. – BalusC

답변

0

사용하여 StringBuilder :

StringBuilder sb = new StringBuidler(); 

for(int i=0;i<l;i++){ 
    sb.append(newParams[i].toString()); 
} 
+2

이 답변은 유효하지 않습니다. 매개 변수 값은'String []'입니다. 'toString()'은 기대했던 값과 완전히 다른 값을 반환합니다. – BalusC

0

이전 제안에 약간의 변화 :

StringBuilder sb = new StringBuilder(); 

for (Object o : parameterMap.values()) { 
    String[] parameterValues = (String[]) o; 
    for (String parameterValue : parameterValues) { 
     sb.add(parameterValue); 
    } 

} 
+0

for-each 구조는 J2SE_1.5에서만 작동합니다. 이 릴리즈가 가능하기 전에 for each 루프를 기본 구조체로 사용하십시오 – Charliemops

+1

이 답변은 유효하지 않습니다. 매개 변수 값은'String []'입니다. 'toString()'은 기대했던 값과 완전히 다른 값을 반환합니다. – BalusC

+0

@ TheCharliemops : 당신은 맞지만 FYI JDK 5는 2004 년에 발표되었습니다! 그래서 널리 쓰이고 OP에서 반대되는 것은 없다고 가정합니다. –

1

parameter mapMap<String, String[]>이다. 제안 된 Object[]#toString() 답변은 전혀 작동하지 않습니다. String[]도 반복해야합니다. 또한 적절한 HTTP 쿼리 문자열을 만들려면 키 - 값 쌍을 URL 인코딩해야합니다. 여기가 수행해야하는 방법은 다음과 같습니다

Map<String, String[]> params = request.getParameterMap(); 
String queryString = toQueryString(params); 
// ... 
관련 문제