2016-04-08 3 views
-1

Я хочу отправить 2 объекта (например, объект User.java и объект Travel.java) из моего сервлета на страницу jsp.Передача нескольких объектов из одного сервлета в jsp

Ниже мой сервлет код:

Travel bookTravel=new Travel(); 
    User user=new User(); 

    SearchService searchService=new SearchService(); 
    bookTravel=searchService.fetchBookingDetail(travelid); 
    int driverId=bookTravel.getUserid(); 
    iService fetchUserService=new LoginService(); 
    user=fetchUserService.fetchUser(driverId); 


    request.setAttribute("user", user); 
    request.setAttribute("bookTravel", bookTravel); 
    RequestDispatcher rd=request.getRequestDispatcher("/bookingpage.jsp"); 
    rd.forward(request, response); 

Ниже моя страница JSP блок кода:

<% Travel travel=new Travel(); 
User user=new User(); 
travel=(Travel)request.getAttribute("bookTravel"); 
user=(User)request.getAttribute("user"); 
%> 
Here are your choice of travel details: 
<%=user.getAddress() %> 
<br /> 

Для приведенного выше сегмента кода, он бросает исключения нулевого указателя, когда управление переходит от сервлета на страницу jsp. Однако, когда я удаляю один объект из сервлета и передаю только один объект (в этом случае: travel). Он работает нормально. Атрибут сеанса не может быть очень полезен, поскольку я сохраняю одну переменную независимо от этих двух объектов.

Мне нужно передать оба объекта из того же сервлета на страницу jsp. Я делаю неправильно? Есть ли больше способов справиться с такой ситуацией?

Заранее спасибо

+0

Ваш доступ выглядит отлично. Если 'travel' не бросает NPE, я думаю, проблема в' user'. Как еще догадывается, 'user = fetchUserService.fetchUser (driverId);' в вашем первом блоке кода, вероятно, возвращает 'null'. – markspace

+0

Я попытался отправить один объект за раз в jsp один за другим. Я не видел, чтобы вызов метода возвращал значение null. Я уверен, что проблема может заключаться в том, чтобы одновременно интерпретировать два объекта на странице jsp. :( – Sid

+0

Как сказал @markspace, не должно быть проблемой передавать два разных объекта так, как вы это делали. Вероятно, это поможет, если вы можете указать, в какую строку вызывается NPE (вставляя трассировку стека исключений в вопрос даже лучше). – DanielBarbarian

ответ

0

В фрагменте кода, который размещен параметр с именем «travelid» не определен.

bookTravel=searchService.fetchBookingDetail(travelid); 

Это, по-видимому, причина того, почему объект bookTravel вызывает проблемы. Проверьте свой код, если вы объявили и инициализировали переменную.