2016-10-05 8 views
0

文字列値がnullのサーブレットから別のページにリダイレクトしようとしています。コードを実行すると、エラーページにリダイレクトするのではなく、同じページにとどまります。私のコードは以下の通りです:RequestDispatcherがJavaサーブレットでJSPにリダイレクトしない

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 
    response.setContentType("text/html"); 
    String emp = request.getParameter("emp")!=null ? request.getParameter("emp"): ""; 
    MCenter mCenter = new MCenter(); 
    mCenter = mCenterDAO.getMCenterPocByEmp(emp); 
    mCenter = mCenterDAO.getMCenterByObject(mCenter); 

    PrintWriter pw = response.getWriter(); 
    String mPocName = mCenter.getMCenterPocName(); 
    String mCenter = mCenter.getMCenterName(); 
    if(mPocName == null || mCenter == null) { 
     request.getRequestDispacher("error.jsp").forward(request, response); 
    System.out.println("Null or not name " + mPocName + "center " + mCenter); 
    } 
    String json = getMCenterPoc(emp); 
    pw.print(json); 
    pw.close(); 
} 

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

私はエラーもなく、価値があるかどうかによって、私には何も出ません。

+0

AJAXを使用していますか? – Runcorn

+0

JSPページでAjax $ .postを使用していますが、これをサーブレットページから呼び出しています。 – Gee

答えて

0

コード内で次の変更を行う必要があります。リクエストディスパッチャーはAjaxポストでは動作しません。

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 
String emp = request.getParameter("emp") != null ? request.getParameter("emp") : ""; 
MCenter mCenter = new MCenter(); 
mCenter = mCenterDAO.getMCenterPocByEmp(emp); 
mCenter = mCenterDAO.getMCenterByObject(mCenter); 
String mPocName = mCenter.getMCenterPocName(); 
String mCenter = mCenter.getMCenterName(); 
if (mPocName == null || mCenter == null) { 
    request.sendRedirect("error.jsp"); 
    System.out.println("Null or not name " + mPocName + "center " + mCenter); 
} else { 
    response.setContentType("text/html"); 
    PrintWriter pw = response.getWriter(); 
    String json = getMCenterPoc(emp); 
    pw.print(json); 
    pw.close(); 
} 
} 

また、Ajaxで成功することもできます。このようにして、コードを変更する必要はありません。 Ajaxを使用したい場合。

var emp = $('#emp').val(); 
$.ajax({ 
    type: "POST", 
    url: "yourServletName", 
    data: 'emp='+emp+'', 
    success: function(response) { 
     if(response='error'){ 
       window.location.href='error.jsp'; 
     }else{ 
       //What you want 
     } 
    } 
}); 

サーブレットは次のように変更する必要があります。

public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 
response.setContentType("text/html"); 
PrintWriter pw = response.getWriter(); 
String emp = request.getParameter("emp") != null ? request.getParameter("emp") : ""; 
MCenter mCenter = new MCenter(); 
mCenter = mCenterDAO.getMCenterPocByEmp(emp); 
mCenter = mCenterDAO.getMCenterByObject(mCenter); 
String mPocName = mCenter.getMCenterPocName(); 
String mCenter = mCenter.getMCenterName(); 
if (mPocName == null || mCenter == null) { 
    String json = "error"; 
} else { 
    String json = getMCenterPoc(emp); 
} 
pw.print(json); 
pw.close(); 
} 
+0

私の答えはあなたに助けてくれましたか? –

0

何も(なしテキストの内容が)あなたのerror.jspファイルではありませんので、あなたはUIで何を見ていません。あなたの要求は、JSP /サーブレット/それをHTMLに転送されると

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Error page</title> 
</head> 
<body> 
    <p>Error has occurred!!!</p> 
</body> 

Forward

:あなたはerror.jspページで以下のようにいくつかのテキストを追加する必要が

あなたのブラウザのURLが変更されることを意味するものではありません。あなたのリクエストは別のリソースに転送され、あなたに送り返されるレスポンスが生成されます。 URLは同じままです。

関連する問題