簡體   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