Search code examples
formsspringjakarta-eemodel-view-controllerspring-roo

Checking which submit button was clicked


I am devoloping a web application using J2EE and Spring Roo as framework.

I want to create a form with two submit buttons:

  • One for save and continue
  • Another for save and finish

    <form action="mycontroller" method="post"> <input type="submit" value="Save and continue"/> <input type="submit" value="Save and finish"/> </form>

So I can choose to either store the data in the database and add more entries or to store the data and finish the process.

How can I check what submit button was clicked in the method of the controller that processes the action?

public class MyController {
    void actionMethod(...) {
        // check which submit was clicked
    }
}

Solution

  • You should add a name field to both buttons:

    <input type="submit" name="button" value="Save and continue"/>
    <input type="submit" name="button" value="Save and finish"/>
    

    Once in the controller, you can recover the element by this name field and check its value field:

    String field = request.getParameter("button");
    
    if ("Save and continue".equals(button)){
        // Do stuff
    }
    else if ("Save and finish".equals(button)){
        // Do a different stuff
    }
    else {
        // None of them were pressed
    }
    

    Or also you can use a different name value for both buttons:

    <input type="submit" name="button1" value="Save and continue"/>
    <input type="submit" name="button2" value="Save and finish"/>
    

    In your controller:

    String button1 = request.getParameter("button1");
    String button2 = request.getParameter("button2");
    
    if (button1 != null){
        // Do stuff
    }
    else if (button2 != null){
        // Do a different stuff
    }
    else {
        // None of them were pressed
    }
    

    Second solution is preferred because it doesn't depend on the value of the elements