2012-11-20 184 views
4

我有jsp,具體取決於某些條件我正在轉發到另一頁。jsp未按預期工作

我有/myjsp/first.jsp其中有代碼,

<% 
if(some condtion){ 
    somelogic     
} 
else 
{ 
     application.getRequestDispatcher("/myjsp/another.jsp").forward(request,response); 
} 
%> 
<div> 
    <jsp:include page='header.jsp' /> 
</div>  

在此代碼,如果流程進行到else條件控制是要another.jsp。

但它也顯示在/myjsp/first.jsp的div標籤下面。

我想保持another.jsp控制,一旦去那裏,它不應該顯示從/myjsp/first.jsp

回答

1

divif內從當前頁面即div標籤什麼。

甚至更​​好,不要使用scriptlet,也不要從JSP轉發。應該將JSP用作視圖組件,並僅生成標記。工作流程應該從servlet內部完成,或者從您首選的MVC框架的操作中完成。

0

使用

response.sendRedirect(); 

代替

 forward(); 

我認爲這將解決您的問題。

+0

不,它不會。前進和重定向是兩個完全不同的東西。 –

1

使用:

<jsp:forward page="pageName.jsp"></jsp:forward> 

代替 application.getRequestDispatcher( 「/ myjsp/another.jsp」)向前(請求,響應);

response.sendRedirect是( 「pagenName.jsp」);

0

我同意,您不應該在jsp中使用'forward'(或sendRedirect),因爲scriptlet在響應緩衝區中有HTML代碼,可以通過增加緩衝區大小來修復(或隱藏)問題< %@ page autoFlush =「true」buffer =「2000kb」%>;我所做的是使用JavaBeans。

+1

歡迎來到StackOverFlow。你應該學會如何[寫出一個好答案](http://stackoverflow.com/help/how-to-answer)。我想讓你知道,你正在回答2年前問的問題。我建議你先看看[help center](http://stackoverflow.com/help)。 – afzalex