Переносить сообщение об успешном завершении через перенаправление после загрузки в Blobstore? - PullRequest
1 голос
/ 08 июля 2010

Я сохраняю изображение в виде большого двоичного объекта, используя следующее, но я не уверен, как передать сообщение через окончательное перенаправление для отображения пользователю:

Файл JSP:

<%
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
String action = blobstoreService.createUploadUrl("/servletimg");
%>

<form method="POST" action="<%= action %>" enctype="multipart/form-data">
   ...
</form>

Целевой сервлет:

public class ServletImg extends HttpServlet 
{   
    public void doGet(HttpServletRequest req, HttpServletResponse resp) 
    {
         saveImg(...);

         req.setAttribute("msg", "worked ok!");

         resp.sendRedirect("/");    
    }
}

Последняя страница JSP, на которую мы перенаправлены обратно:

if (request.getAttribute("msg") == null) {
    Log.e("Hey we're missing the expected attribute!!!");
}

Все работает нормально, мое изображение сохраняется и т. Д., Но я не вижу атрибута "msg" при перенаправлении обратно на главную страницу JSP. Есть ли способ передать сообщение или мне нужно добавить его в качестве параметров в перенаправлении, например:

resp.sendRedirect("/?msg=it worked ok!");

Спасибо

1 Ответ

1 голос
/ 08 июля 2010

A redirect в основном предписывает клиенту запустить новый HTTP-запрос к серверу.Первоначальный запрос (и ответ) будет обработан, включая все установленные атрибуты.Так что да, вам действительно нужно передать параметр по URL перенаправления.

response.sendRedirect("index.jsp?msg=" + URLEncoder.encode("worked ok!", "UTF-8"));

, а затем в JSP

<p>Message: ${param.msg}</p>

В качестве альтернативы вы можете вместо этого просто forward к рассматриваемому ресурсу, то есть

request.setAttribute("msg", "worked ok!");
request.getRequestDispatcher("/index.jsp").forward(request, response);

, а затем в JSP (как сокращение для уродливого и обескураженного скриптлета с request.getAttribute("msg")):

<p>Message: ${msg}</p>

При пересылке первоначальный запрос все еще будет доступен в целевом ресурсе.

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