2013-06-12 2 views
1

Вот мой кодКак получить значение с карты?

Iterator it = request.getParameterMap().entrySet().iterator(); 
     while (it.hasNext()) { 
      Map.Entry pairs = (Map.Entry)it.next(); 
      System.out.println(pairs.getKey() + " = " + pairs.getValue()); 
      it.remove(); // avoids a ConcurrentModificationException 
     } 

где запрос HttpServletRequest. Вот вывод, который я получаю в консоли

id = [Ljava.lang.String;@3f13bf94 
title = [Ljava.lang.String;@5eea278c 
dlPhone = [Ljava.lang.String;@98a6bd1 
name = [Ljava.lang.String;@77736513 

почему этот Ljava.lang.String ???? как получить точное значение?

ответ

5

почему этот Ljava.lang.String?

Поскольку каждое значение предположительно String[], и вызов toString непосредственно на массиве ничего особенно полезного не дают - только нормальное осуществление унаследованный от Object, который указывает тип и системы сгенерированный хэш-код.

Чтобы получить полезное представление, вы могли бы использовать:

String key = (String) pairs.getKey(); 
String[] values = (String[]) pairs.getValue(); 
System.out.println(key + " = " + Arrays.toString(values)); 

Обратите внимание, что генерики бы сделать это гораздо яснее, но если getParameterMap только объявляется вернуться Map, вам не придется много ходить по , Можно выполнить непроверенной бросок, по крайней мере, уменьшить объем кода, - но это на самом деле не дает вам безопасность в момент броска:

@SuppressWarnings("unchecked") 
Map<String, String[]> map = (Map<String, String[]>) request.getParameterMap(); 
for (Map.Entry<String, String[]> entry : map) { 
    System.out.println(entry.getKey() + " = " + Arrays.toString(entry.getValue())); 
} 
3

Это происходит потому, что pairs.getValue() возвращается массив строк. Просто отлаживайте и проверяйте это.

Вы должны быть Перебор pairs.getValue() и распечатать каждую запись для вашей цели здесь, или сделать Arrays.toString((String[])pairs.getValue())

0

Попробуйте это:

Iterator it = request.getParameterMap().keySet().iterator(); 
     while (it.hasNext()) { 
      String key = (String)it.next(); 
      System.out.println(key + " = " + requset.getParameter(key)); 
      //it.remove(); // avoids a ConcurrentModificationException 
      // ??? why ??? 
     } 
Смежные вопросы