繁体   English   中英

通过<a href>和jstl标签</a>将参数从JSTL传递到servlet

[英]Passing parameter from JSTL to servlet through <a href> and jstl tags

这就是我用来发送包含值${masession.idemp}的参数“ idemp”的代码

<a href="<c:url value="/consultertickets">
                <c:param name="idemp" value="${masession.idemp}"/>
         </c:url>">
<img src="<c:url value="/inc/liste.png"></c:url>" alt="consulter tickets" />
</a>

当重定向到servlet“ / consultertickets”时,浏览器URL显示:

http://localhost:4040/monprojet2/consultertickets?idemp=64

因此参数已传递并且可以正常工作,但是用于GET而不是POST的方法很明显,这是我在Servlet中使用的方法,这是Servlet的代码。

@WebServlet(urlPatterns= {"/consultertickets"})

public class ConsulterTickets extends HttpServlet {

private String VUE = "/WEB-INF/ListeTickets.jsp";

@EJB
private TicketDao ticketDao;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    this.getServletContext().getRequestDispatcher(VUE).forward(request, response);
}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    CreationTicketForm ticketform = new CreationTicketForm(ticketDao);
    List<Ticket> lticket = ticketform.recupererTickets(request);

    boolean resultat;
    if(lticket.isEmpty())
    {
        //resultat="Vous n'avez soumit aucun ticket";
        resultat = false;
        request.setAttribute("resultat", resultat);
        this.getServletContext().getRequestDispatcher("/ListeTickets2.jsp").forward(request, response);
    }else{
        //String VUE = "/ListeTickets.jsp";
        resultat=true;
        request.setAttribute("resultat", resultat);
        request.setAttribute("lticket", lticket);
        this.getServletContext().getRequestDispatcher(VUE).forward(request, response);
    }
}

}

有什么方法可以通过POST方法将参数传递给servlet,而无需通过<form></form>

解决方案1:

修改doGet方法

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //this.getServletContext().getRequestDispatcher(VUE).forward(request, response);
    doPost(request, response);
}

解决方案2:

删除doGet()并将doPost()更改为service()

编辑1:

参见, Hyperlinks<a>标记)用于发送GET请求,但不发送POST

因此,如果要使用Hyperlink实现发送POST请求,则没有直接方法。 但是, Javascript可以为您提供帮助。

使用Javascript您可以引导<a><form>的帮助下发送POST请求。

我刚刚修改了您的代码。 这应该对您有帮助。

<a href="javascript:document.getElementById('form1').submit()">
    <img src="<c:url value="/inc/liste.png"></c:url>" alt="consulter tickets" />
</a>

<form action="<c:url value="/consultertickets"/>" method="post" id="form1">
    <input type="hidden" name="idemp" value="${masession.idemp}"/>
</form>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM