0

i'm working on my jsp page, and i have a link with 2 parameters: shop.jsp:

<a href="<c:url value="/boutique?achat=${module.id}&token=${module.token}" />" class=" modal-action modal-close waves-effect waves-green btn-flat">Oui</a>

So i have 2 if in my servlet, to work on the two parameters: shop.java:

public void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException
{
    httpServletRequest.setAttribute("page", "boutique");
    HttpSession session = httpServletRequest.getSession(true);
    int tokens = moduleDAO.getTokens(session.getAttribute("sessionPlayer"));
    List<Module> modules = moduleDAO.select();
    httpServletRequest.setAttribute("modules", modules);
    httpServletRequest.setAttribute("tokens", tokens);

    if(httpServletRequest.getParameter("achat") != null)
    {
        inventoryDAO.addInventory(session.getAttribute("sessionPlayer"), Integer.parseInt(httpServletRequest.getParameter("achat")));
    }

    if(httpServletRequest.getParameter("token") != null)
    {
        inventoryDAO.changeToken(session.getAttribute("sessionPlayer"), Integer.parseInt(httpServletRequest.getParameter("token"))); 
    }

    getServletContext().getRequestDispatcher("/WEB-INF/shop.jsp").forward(httpServletRequest, httpServletResponse);
}

But i want to refresh my page after clicked on the lick with the 2 parameters because in my shop.jsp page i have a value: ${tokens}, which it doesn't refresh, because when i click on the link i still on th eurl with the 2 parameters.

So how i can refresh the page, after clicking on the link ?

Thanks!

I did:

if(httpServletRequest.getParameter("token") != null)
{
    inventoryDAO.changeToken(session.getAttribute("sessionPlayer"), Integer.parseInt(httpServletRequest.getParameter("token"))); 
    String referer = httpServletResponse.getHeader("/WEB-INF/boutique.jsp");
    httpServletResponse.sendRedirect(referer);
}

getServletContext().getRequestDispatcher("/WEB-INF/shop.jsp").forward(httpServletRequest, httpServletResponse);

But i get an error: Cant use forward after response getted

benjyspider
  • 245
  • 2
  • 4
  • 16
  • @Nivedita i want to refresh after the if – benjyspider May 21 '15 at 13:11
  • I think you can use use Referer: `String referer = request.getHeader("Referer"); response.sendRedirect(referer);` – user63762453 May 21 '15 at 13:13
  • @Nivedita I did: if(httpServletRequest.getParameter("token") != null) { inventoryDAO.changeToken(session.getAttribute("sessionPlayer"), Integer.parseInt(httpServletRequest.getParameter("token"))); String referer = httpServletResponse.getHeader("/WEB-INF/boutique.jsp"); httpServletResponse.sendRedirect(referer); } getServletContext().getRequestDispatcher("/WEB-INF/shop.jsp").forward(httpServletRequest, httpServletResponse); Error: Cant use forward after response getted – benjyspider May 21 '15 at 13:17
  • Can you update this in the question? It's not clear in the comment. – user63762453 May 21 '15 at 13:18
  • Maybe you can write the forward statement in the else part. You don't want to refresh and forward at the same time? – user63762453 May 21 '15 at 13:20
  • @Nivedita ` getServletContext().getRequestDispatcher("/WEB-INF/boutique.jsp").forward(httpServletRequest, httpServletResponse);` It' for display my page – benjyspider May 21 '15 at 13:23
  • Try writing just getHeader("referer"); instead of getHeader("/WEB-INF/boutique.jsp"); – user63762453 May 21 '15 at 13:23
  • Same error with: ` if(httpServletRequest.getParameter("token") != null) { inventoryDAO.changeToken(session.getAttribute("sessionPlayer"), Integer.parseInt(httpServletRequest.getParameter("token"))); String referer = httpServletResponse.getHeader("referer"); httpServletResponse.sendRedirect(referer); }` – benjyspider May 21 '15 at 13:28
  • It should be `String referer = httpServletRequest.getHeader("/WEB-INF/boutique.jsp");` not `String referer = httpServletResponse.getHeader("/WEB-INF/boutique.jsp");` – user63762453 May 21 '15 at 13:28
  • @Nivedita Same error with: ` if(httpServletRequest.getParameter("token") != null) { inventoryDAO.changeToken(session.getAttribute("sessionPlayer"), Integer.parseInt(httpServletRequest.getParameter("token"))); String referer = httpServletRequest.getHeader("/WEB-INF/boutique.jsp"); httpServletResponse.sendRedirect(referer); }` – benjyspider May 21 '15 at 13:30
  • See this: http://stackoverflow.com/questions/18211497/servlet-cannot-forward-after-response-has-been-committed – user63762453 May 21 '15 at 13:34
  • @Nivedita Thanks, but i found an anoher question on stackoverflow, and i added a return;: ` if(httpServletRequest.getParameter("token") != null) { inventoryDAO.changeToken(session.getAttribute("sessionPlayer"), Integer.parseInt(httpServletRequest.getParameter("token"))); httpServletResponse.sendRedirect("/galactium/boutique"); return; }` – benjyspider May 21 '15 at 13:50

1 Answers1

0

I found an anoher question on stackoverflow, and i added a return;:

if(httpServletRequest.getParameter("token") != null) {
inventoryDAO.changeToken(session.getAttribute("sessionPlayer"), Integer.parseInt(httpServletRequest.getParameter("token")));
httpServletResponse.sendRedirect("/galactium/boutique");
return;
}
benjyspider
  • 245
  • 2
  • 4
  • 16