JSP: ошибка на странице пересылки - PullRequest
0 голосов
/ 10 мая 2011

Этот вопрос относится к предыдущему, когда я нажимаю на якорь

<a href="#" id="Email">send email</a>

, он вызывает сервлет, используя json

   $("#Email").click(function() {

    var option={
        "action":"sendEmail"
    };
    $.getJSON('StudentManagementServlet',option, function(hasEmail) {
        if(hasEmail == false){
            // //view form to let user enter his email
            $("#CommViaEmail").fadeIn("normal");   
        }
    });
});

, в сервлете я обрабатываю запрос

 if (action != null && action.equals("sendEmail")) {

    //open connection to db
    con.setAutoCommit(false);
    String email = ParentManagement.getParentEmail(con, stdNo);
    if (email != null) {
        String commResult = createAccountAndSendEmail(con, parentNo, email);
        request.setAttribute("result", commResult);
        request.setAttribute("incp", "ResultPage");
         RequestDispatcher dispatcher = request.getRequestDispatcher("/index.jsp");
        dispatcher.forward(request, response);  //doesn't make forward!!!!!
        System.out.println(">>send email DONE!!");
        con.commit();
        return;
    } else {
        boolean hasEmail = false;
        String json = new Gson().toJson(hasEmail);
        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write(json);

    }
}

Проблема здесь в том, что если у пользователя есть электронное письмо, то я отправляю электронное письмо, но прошу не пересылать на страницу результатов, даже если печатается заявление на печать "System.out.println (" >> отправить электронное письмо ГОТОВО!! ");"??

Ответы [ 2 ]

1 голос
/ 10 мая 2011

Вы должны позволить JS / jQuery выполнять эту работу.Пусть сервлет записывает true как результат JSON, а в JS делает

if (hasEmail) {
    window.location = 'index.jsp';
} else {
    $("#CommViaEmail").fadeIn("normal");   //view form to let user enter his email
}

Или, если вы хотите самостоятельно управлять URL-адресом, добавьте новое местоположение в JSON

Map<String, Object> data = new HashMap<String, Object>();
data.put("hasEmail", true);
data.put("location", "index.jsp");
// ...

с помощью

..., function(data) {
    if (data.hasEmail) {
        window.location = data.location;
    } else {
        $("#CommViaEmail").fadeIn("normal");   //view form to let user enter his email
    }
}
0 голосов
/ 10 мая 2011

Вы делаете AJAX-запрос от клиента и пытаетесь переслать этот запрос на стороне сервера.

AJAX-запросы DONT обновить страницуПеременная hasEmail в функции javascript будет строкой, содержащей HTML-код index.jsp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...