How to disable trimming of whitespace when getting form data with using Thymeleaf in Spring Code Answer

Hello Developer, Hope you guys are doing great. Today at Tutorial Guruji Official website, we are sharing the answer of How to disable trimming of whitespace when getting form data with using Thymeleaf in Spring without wasting too much if your time.

The question is published on by Tutorial Guruji team.

I created a form with using Thymeleaf which listened by controller. When I input a string that contains leading or trailing spaces (example: ” abc “.), the string auto trimmed in the controller (example: “abc”.). But I want to keep these leading or trailing spaces even the value passed into controller. How can I do that?

Example code:

Form with using Thymeleaf:

<form role="form" action="/" method="post" autocomplete="off" th:action="@{/change-password}" th:object="${form}">
  <div>
    <label for="new-pass" th:text="#{password.newPassword}">New password</label>
    <input type="password" th:field="*{password}" th:placeholder="#{password.newPassword}" required="required" />
  </div>
  <div>
    <button type="submit" th:text="#{confirm}">Change</button>
    <a href="/" th:href="@{/}" th:text="#{cancel}">Cancel</a>
  </div>
</form>

Controller for page:

@RequestMapping(value = "/change-password", method = RequestMethod.GET)
public String changePassword(@ModelAttribute("form") ChangeMyPasswordForm form) {
    return "/account/change-pass";
}

Controller that handling form action:

@RequestMapping(value = "/change-password", method = RequestMethod.POST)
public void changeSelfPassword(ChangeMyPasswordForm form) {
    System.out.println(form.getPassword());
}

Class ChangeMyPasswordForm:

public class ChangeMyPasswordForm {

    private String password;

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

The String that input in the form:

"   abc   "

Expected result in the controller System.out.println:

"   abc   "

Actual result:

"abc"

Answer

First you need to check where the values are being truncated thymeleaf or Spring?

You can do that by printing values using jquery/javascript before form submission.

By default spring it doesn’t trim the parameters. just check that you are NOT using StringTrimmerEditor like below.

@Controller
public class MyFormController {

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
    }

    // ...
}
We are here to answer your question about How to disable trimming of whitespace when getting form data with using Thymeleaf in Spring - If you find the proper solution, please don't forgot to share this with your team members.

Related Posts

Tutorial Guruji