2012-05-03 15 views
1

私はjspを持っています。 jsp loadでサーブレットを呼び出し、結果を以下のように同じ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> 

私はリクエストに結果を格納し、以下のようにJSPを呼び出すための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) 

私を助けてください..

JSPは、JSP、サーブレットへの転送を、含まれて
+0

リクエストをJSPに転送した後に返信する必要があります。 –

答えて

2

サーブレットは、サーブレットを含むJSPに転送されます。サーブレットは、サーブレットを含むJSPに転送されます。サーブレットは、サーブレットを含み、サーブレットを含むJSPに転送します。サーブレットを含むJSP。 JSPに相談してください。

ここでは深刻な設計上の問題があります。 MVCの原則を採用します。すべての要求は、Modelをロードして適切なJSP(View)にディスパッチするサーブレット(Controller)に移動します。ビューはサーブレットを含むべきではなく、確かにこのような再帰的な方法ではありません。

+0

こんにちはNizet、ありがとうございます。 getRequestDispatcherメソッドで別のjspを使用して結果を表示できますか?ありがとう! – user1016403

+0

それを試してください。しかし、本当に安っぽいデザインを使い続けたいですか?なぜそれを清潔にしないのですか? –

+0

返事ありがとうございますNizet。 jspページのロード時にサーブレットを呼び出す代わりに、サーブレットを直接呼び出してjspで結果を表示できますか?私に提案してください.. – user1016403

0

サーブレットのURLパターンをjsp:icludeタグに指定することはできません。理由は、getメソッドまたはostメソッドを呼び出すことがわからないからです。 JSPパスのみを指定してください。

関連する問題