2016-10-05 3 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

Я использую Ajax $ .post на моей странице JSP, но я вызываю это с моей страницы сервлета. – 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.

Вы должны добавить некоторый текст, как показано ниже в error.jsp страницы:

<!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

Когда ваш запрос перенаправляется на JSP/сервлет/html это не означает, что ваш URL-адрес браузера будет изменен, просто ваш запрос будет перенаправлен на другой ресурс, чтобы создать ответ, который будет отправлен вам обратно. URL-адрес останется таким же.

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