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?

19
demandé sur BalusC 2013-02-06 11:34:34

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:

36
répondu BalusC 2017-05-23 10:31:39
<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

1
répondu Meherzad 2013-02-06 10:28:17

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.

1
répondu Sebastián Aguerre 2013-02-06 12:39:02

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");
}
-1
répondu LKG 2018-03-01 15:31:27