2013-11-15 5 views
-1

У меня проблема с передачей ArrayList из сервлета в сервлет.Servlet ArrayList

первого сервлет

HttpSession session = request.getSession(); 
ArrayList users = new ArrayList();  
… 
    request.setAttribute("list", utenti); 
    RequestDispatcher rd = request.getRequestDispatcher("/secondServlet"); 
    rd.forward(request, response); 
    return; 

ВТОРОЙ сервлет

HttpSession session = request.getSession(); 
    ArrayList users = (ArrayList) session.getAttribute("list");  

Если теперь я использую итератор читать один элемент Я, как результат, что мой ArrayList является недействительным. Я не понимаю, почему я не могу это передать.

Танки

+4

request.setAttribute()/session.getAttribute(). Угадайте, что случилось. – Kayaman

ответ

3

Вы пытаетесь установить значение в запрос и пытается прочитать из сессии.

Чтобы получить список, ознакомьтесь с запросом.

Или, если вам потребуется этот список для полного сеанса пользователя, установите его в сеанс.

+0

Работает Большое спасибо – user2982520

0

Добавление ответа Яду, в

Do программы с интерфейсом.

Избегайте

ArrayList users = new ArrayList(); 

ли

List users = new ArrayList(); 

еще лучше

List<String> users = new ArrayList<String>(); 
-1

во втором сервлета оставить ссылку сеанса из запроса и просто использовать это: -

ArrayList users = (ArrayList) request.getAttribute("list"); 
0

В FIRSTSERVLET попробуйте сеанс вместо запроса.

session.setAttribute("list", utenti); 

RequestDispatcher rd = request.getRequestDispatcher("/secondServlet"); 
rd.forward(request, response); 
return;