" alt="consulter tickets-6ren">
gpt4 book ai didi

java - 通过 和 jSTL 标记将参数从 JSTL 传递到 servlet

转载 作者:行者123 更新时间:2023-12-02 13:17:12 28 4
gpt4 key购买 nike

所以这是我用来发送包含值 ${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>

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com