Comment puis-je appeler une méthode Java spécifique sur click/submit event d'un bouton spécifique dans JSP?
mon fichier Java est:
public class MyClass {
public void method1() {
// some code
}
public void method2() {
//some code
}
public void method3() {
//some code
}
}
dans ma page JSP j'ai trois boutons HTML.
si je clique sur button1
, alors seulement method1
sera appelé, si je clique sur button2
alors seulement method2
s'exécutera, et si button3
, alors seulement method3
, et ainsi de suite.
Comment puis-je y parvenir?
4 réponses
il suffit de donner un nom unique à chaque élément du bouton. Lorsque vous appuyez sur, le nom du bouton est disponible comme paramètre de requête de la manière habituelle comme avec les éléments d'entrée.
vous devez seulement vous assurer que les entrées de bouton ont type="submit"
comme dans <input type="submit">
et <button type="submit">
et pas type="button"
, qui rend un bouton" mort "purement pour onclick
stuff et tout.
E. G.
<form action="${pageContext.request.contextPath}/myservlet" method="post">
<input type="submit" name="button1" value="Button 1" />
<input type="submit" name="button2" value="Button 2" />
<input type="submit" name="button3" value="Button 3" />
</form>
avec
@WebServlet("/myservlet")
public class MyServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
MyClass myClass = new MyClass();
if (request.getParameter("button1") != null) {
myClass.method1();
} else if (request.getParameter("button2") != null) {
myClass.method2();
} else if (request.getParameter("button3") != null) {
myClass.method3();
} else {
// ???
}
request.getRequestDispatcher("/WEB-INF/some-result.jsp").forward(request, response);
}
}
alternativement, utilisez <button type="submit">
au lieu de <input type="submit">
, alors vous pouvez leur donner tous le même nom, mais une valeur unique. La valeur du <button>
ne sera pas utilisée comme étiquette, vous pouvez simplement spécifier que vous-même en tant qu'enfant.
E. G.
<form action="${pageContext.request.contextPath}/myservlet" method="post">
<button type="submit" name="button" value="button1">Button 1</button>
<button type="submit" name="button" value="button2">Button 2</button>
<button type="submit" name="button" value="button3">Button 3</button>
</form>
avec
@WebServlet("/myservlet")
public class MyServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
MyClass myClass = new MyClass();
String button = request.getParameter("button");
if ("button1".equals(button)) {
myClass.method1();
} else if ("button2".equals(button)) {
myClass.method2();
} else if ("button3".equals(button)) {
myClass.method3();
} else {
// ???
}
request.getRequestDispatcher("/WEB-INF/some-result.jsp").forward(request, response);
}
}
voir aussi:
<form method="post" action="servletName">
<input type="submit" id="btn1" name="btn1"/>
<input type="submit" id="btn2" name="btn2"/>
</form>
en appuyant sur la demande va à servlet sur la page de servlet vérifier quel bouton est appuyé et ensuite appeler en conséquence la méthode nécessaire comme objectName.méthode
vous pouvez essayer d'ajouter action=" # {yourBean.function1}" sur chaque bouton (en changeant bien sûr la méthode function2, function3, ou tout ce dont vous avez besoin). Si cela ne fonctionne pas, vous pouvez essayer la même chose avec l'événement onclick.
de toute façon, il serait plus facile de vous aider si vous nous dites quel type de boutons essayez-vous d'utiliser, a4j:commandButton ou ce que vous utilisez.
si vous avez web.xml puis
HTML/JSP
<form action="${pageContext.request.contextPath}/myservlet" method="post">
<input type="submit" name="button1" value="Button 1" />
</form>
web.xml
<servlet>
<display-name>Servlet Name</display-name>
<servlet-name>myservlet</servlet-name>
<servlet-class>package.SomeController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
Java SomeController.java
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Write your code below");
}