Spring MVC Tutorial
Core Spring MVC
Spring MVC - Annotation
Spring MVC - Form Handling
Spring MVC with JSTL
Spring MVC with REST API
Spring MVC with Database
In Spring MVC, the <form:input>
tag is used to render a text box (input field of type "text"). The value of the text box can be bound to a property of a bean, making form submissions easier to handle.
Let's see how you can create a text box using the <form:input>
tag:
Ensure you have the required dependency for Spring MVC:
<!-- Spring Web MVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.x.x.RELEASE</version> </dependency>
Suppose you have a User
model with a username
property:
public class User { private String username; // getters and setters }
@Controller @RequestMapping("/user") public class UserController { @GetMapping("/register") public String showRegistrationForm(Model model) { model.addAttribute("user", new User()); return "registrationForm"; } @PostMapping("/register") public String processRegistration(@ModelAttribute User user) { // Process the user registration... return "registrationSuccess"; } }
To use the form tag library in JSP, you'll need to include the taglib directive at the top:
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
Then, use the <form:input>
tag to create a text box:
<form:form modelAttribute="user" method="POST"> <label for="username">Username:</label> <form:input path="username" /> <input type="submit" value="Register" /> </form:form>
In the <form:input>
tag:
path
attribute binds the text box to the username
property of the user
bean.Once the form is submitted, the processRegistration
method in the controller is invoked. The @ModelAttribute
annotation ensures that the form data is bound to the User
bean.
You can add additional attributes to the <form:input>
tag, such as CSS classes, placeholder text, etc.:
<form:input path="username" cssClass="input-class" placeholder="Enter username" />
The Spring MVC form tag library provides a declarative way to bind form elements to model attributes, handle form validation, and process form submissions. This makes it a powerful tool for building robust and maintainable web applications.
Spring MVC Text Box Example:
Description: This is a basic example showcasing the usage of a text box in a Spring MVC form.
Code Snippet: (Model)
public class User { private String username; // Getter and Setter }
(Controller)
@Controller public class UserController { @GetMapping("/register") public String showRegistrationForm(Model model) { model.addAttribute("user", new User()); return "registrationForm"; } @PostMapping("/register") public String registerUser(@ModelAttribute("user") User user) { // Process user registration logic return "registrationSuccess"; } }
(Thymeleaf - registrationForm.html)
<form th:object="${user}" th:action="@{/register}" method="post"> <label for="username">Username:</label> <input type="text" id="username" name="username" th:field="*{username}" required /> <button type="submit">Register</button> </form>
Customizing Text Boxes in Spring MVC:
Description: This example demonstrates how to customize text boxes in a Spring MVC form.
Code Snippet: (Thymeleaf template)
<form th:object="${user}" th:action="@{/customize}" method="post"> <label for="username">Username:</label> <input type="text" id="username" name="username" th:field="*{username}" class="custom-textbox" /> <button type="submit">Customize</button> </form>
Ajax Text Box Autocomplete in Spring MVC:
Description: This example demonstrates how to implement Ajax text box autocomplete in a Spring MVC form.
Code Snippet: (Thymeleaf template)
<form th:object="${user}" th:action="@{/autocomplete}" method="post"> <label for="username">Username:</label> <input type="text" id="username" name="username" th:field="*{username}" class="autocomplete" /> <button type="submit">Autocomplete</button> </form>
Spring MVC Text Box Size and Styling:
Description: This example covers setting the size and styling of a text box in a Spring MVC form.
Code Snippet: (Thymeleaf template)
<form th:object="${user}" th:action="@{/customize}" method="post"> <label for="username">Username:</label> <input type="text" id="username" name="username" th:field="*{username}" size="20" style="color: blue;" /> <button type="submit">Style</button> </form>