Java Modal: A Step-by-Step Tutorial Even Your Grandma Can Follow! ;)
Published: 2024-06-10 14:29:22

Hi there, fellow Java enthusiasts! Today, I'd like to do a step-by-step guide on how to use modals in a Java-based web application using Spring Boot and Thymeleaf. Fear not, for I will guide you through each step with such clarity that even your dear grandma (or mom...) would be like, 'I could code that!' So, read along for a 'how to' on showing and hiding modals and handling form submissions. Ready? Let's dive into the world of Java modals!

- Step 1: Set Up Your Spring Boot Project

Assuming you already have a Spring Boot project set up, we'll skip straight to the next part.

- Step 2: Import Dependencies and Bootstrap

Our project depends on certain libraries, just like baking a cake requires flour. For this project, we will use Bootstrap, which provides a built-in modal component that makes creating and managing modals easier.

2.1 Add Bootstrap to Your Project
If you haven't already, you need to include Bootstrap in your project. You can do this by adding the following lines in the head of your template.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z9ekngfp2x6y545p14nv.png)

2.2 

-Step 3: Let's define our component, in this case we'll call it 'formComponent

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/maplkr40hvrr33pacekw.png)

- Step 4: Setting op our state. We use state to keep track of the values that are being entered in the form fields. It's like having a smart assistant that remembers the user's input until we need it. With the useState hook, we create a state variable called values to store the form values and a function called setValues to update that state. This helps us make our app more interactive and responsive. The input values I use, you can change them to the ones you will use in your form.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ipujjgj4wb7iefrvif4x.png)

- Step 5: Handling the change in our input fields Everytime we add a character in our input fields, we need to make sure that it's updating in our useState. That's why we create a function to handle this change and store it accordingly in the useState.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3skas00tgq8iydn9a6px.png)

- Step 6: Handling the form submission So, whenever we filled out the whole form, we need to send it somewhere to the back for it to be processed and taken care of. (grandmas: Think about writing a letter, putting it in the mailbox and let the mailman take further care of it


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bhhb3s3pgtp6nsp16rrk.png)

- Step 7 (almost there): Showing and hiding the Modal The thing about a modal is that it gives you that extra sparkle on your project without having to create an entire new page for just a form. You open it, see the rest of the page in the background, but the focus lies on the Modal. Think of it in layers, your modal will be the top layer when opened, and the background will be the layer underneath.
So first we start by making 2 functions, one to open it and one to close it.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dmzttk2iu8wcol44dgu5.png)

- Step 8: Rendering the component If we want to see the mdoal, we need to render it so that the user is able to see and interact with it.
This is where we start returning things, so that the user can see it.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qufxzqb471wbnrgl5jzz.png)

In this example I see a '+' sign as a button to open the modal. We'll add a 'onClick' event that will trigger the 'showModal' function.
note the 'modal hidden' it's to style the modal. When 'hidden' we cannot see it. When we press the '+' button, the classname will be 'modal'.

- Step 9 (Be patient, 3 more to go): Implementing the content of the modal, when opened You can change my input with the input you'll need on your page. This step is were we will put content in our modals to display to the user.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o2lrhuhx1yyz0o8n5qma.png)

- Step 10: Let's add our form input fields!
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v4o4ueusispg426lsz7e.png)

You can change the form input tyoes to whatever you need to use in ours, this is just an example of some you can use.
Note that we call the function 'handlesubmit' we created above to do what needs to be done when we press that button we're about to add!

- Step 11: FINAL STEP! Let's add our magic button who will handle everything without any other code needed..... just kidding, if only it were that simple on the back-end side...


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ac13a3cj1re88hb3gumh.png)

Et voila, modal is ready in use. U can style the modal however you'd like. I used an overlay which blurred the layer below.
Below I put some screenshots of how my modal looks like in the project I used the modals in.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/02zzpe9cd4azoisz4y4r.png)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ywnrbnhvh2yabna9d38b.png)

Thank you for reading!
Grandmas, I tried my best to explain it. I promise... but sometimes I don't even get half of what I'm doing ;)

Kindest regards,
Jitske De herdt