2012-05-03 3 views
1

У меня есть jsp. который вызывает сервлет на загрузке jsp и отображает результаты в том же jsp, что и ниже.Получение исключения при вызове jsp из сервлета?

Some.jsp

<html> 

    <jsp:include page="/HelloWorld"/> 

    <%Iterator itr;%> 
<% List data= (List)request.getAttribute("results"); 
for (itr=data.iterator(); itr.hasNext();) 
{ 
%> 


<TABLE align="center" cellpadding="15" border="1" style="background-color: #ffffcc;"> 
        <TR> 
         <TD align="center"><%=itr.next()%></TD> 
        </TR> 

      </TABLE> 

<%}%> 


    </body> 
</html> 

в сервлет я храню результаты запроса и с помощью RequestDispatcher для вызова СПЯ, как показано ниже.

public class SomeServlet extends HttpServlet { 

    public void doGet(HttpServletRequest request, 
       HttpServletResponse response) 
       throws ServletException,IOException{ 

     List<String> list = new ArrayList<String>(); 

     //some logic to populate list 

     request.setAttribute("results", list); 
     request.getRequestDispatcher("/WEB-INF/Some.jsp").forward(request, response); 


       } 

} 

Но я получаю ниже исключения при отображении результатов в JSP:

java.io.IOException: Stream closed 
    at org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:202) 
    at org.apache.jasper.runtime.JspWriterImpl.clearBuffer(JspWriterImpl.java:157) 

Пожалуйста, помогите мне ..

+0

Вы должны написать ответ после пересылки запроса в JSP –

ответ

2

СПЯ включает в сервлет, который направляет на JSP, который включает в себя сервлет, который пересылает в JSP, который включает в себя сервлет, который пересылает JSP, который включает сервлет, который пересылает JSP, который включает сервлет, который пересылается в JSP, который включает сервлет, который пересылает в JSP, который включает сервлет, который для Подопечные JSP ...

У вас серьезная проблема с дизайном. Примите принципы MVC: все запросы переходят к сервлету (Controller), который загружает модель и отправляет соответствующий JSP (View). В представлении не должно быть сервлета и, конечно, не рекурсивным образом.

+0

Привет, спасибо за ваш ответ. в методе getRequestDispatcher я могу использовать другой jsp для отображения результатов? Благодаря! – user1016403

+0

Проверьте его. Но вы действительно хотите продолжать использовать дрянной дизайн? Почему бы не сделать это чистым способом? –

+0

Спасибо за ваш ответ Nizet. вместо вызова сервлета на загрузку jsp-страницы, могу ли я напрямую вызвать сервлет и отобразить результаты в jsp? Пожалуйста, предложите мне .. – user1016403

0

Вы не можете присвоить шаблон url сервлета в теге jsp: iclude. Причина в том, что он не знает, как вызвать метод get или метод ost. Вы должны указать только путь jsp.

Смежные вопросы