Как отключить обрезку пробелов при получении данных формы с помощью Thymeleaf в Spring - PullRequest
0 голосов
/ 09 ноября 2018

Я создал форму с использованием Thymeleaf, который слушал контроллер. Когда я ввожу строку, которая содержит начальные или конечные пробелы (пример: "abc ".), строка автоматически обрезается в контроллере (пример:" abc ".). Но я хочу сохранить эти начальные или конечные пробелы даже при передаче значения в контроллер. Как я могу это сделать?

Пример кода:

Форма с использованием 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>

Контроллер для страницы:

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

Контроллер, обрабатывающий действие формы:

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

Класс ChangeMyPasswordForm:

public class ChangeMyPasswordForm {

    private String password;

    public String getPassword() {
        return password;
    }

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

Строка, которая вводится в виде:

"   abc   "

Ожидаемый результат в контроллере System.out.println:

"   abc   "

Фактический результат:

"abc"

1 Ответ

0 голосов
/ 09 ноября 2018

Сначала нужно проверить, где усечены значения тимелина или весны?

Это можно сделать, напечатав значения с помощью jquery / javascript перед отправкой формы.

По умолчанию пружина не обрезает параметры. просто убедитесь, что вы НЕ , используя StringTrimmerEditor , как показано ниже.

@Controller
public class MyFormController {

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

    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...