2015-05-25 2 views
4

У меня очень простое приложение Spring Boot + Thymeleaf с одной формой и pojo в качестве базовой модели для формы.Spring Boot + Thymeleaf: Связывать пустую форму ввода с NULL-строкой

Модель основа имеет одну строковое свойство, которое нулевой по умолчанию:

public class Model { 

    private String text = null; 

    public String getText() { 
     return text; 
    } 

    public void setText(String text) { 
     this.text = text; 
    } 

    @Override 
    public String toString() { 
     return "Model [text=" + (text == null ? "<null>" : text.isEmpty() ? "<empty>" : text) + "]"; 
    } 

} 

форма имеет одно поле ввода, связанный с этим свойством:

<form action="#" th:action="@{/}" th:object="${model}" method="post"> 
    <label th:for="${#ids.next('text')}">Text</label> 
    <input type="text" th:field="*{text}" /> 
    <button type="submit">Submit</button> 
</form> 

Однако всякий раз, когда форма была отправлена значение будет установлено на «" (пустая строка) вместо нулевого значения.

Есть ли простой способ добиться того, что для свойства будет установлено значение null вместо пустой строки?

Пробег образца проекта можно найти по адресу https://github.com/smilingj/springboot-empty-string-to-null.

ответ

4

Добавить initbinder к контроллеру

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

Направить offcial ссылка

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/portlet.html#portlet-ann-initbinder

+3

Для глобального решения можно объединить этот ответ с решением от http://stackoverflow.com/ вопросы/1268021/как-могу-я-регистр-а-ГЛОБАЛ-настраиваемого-редактора весна-Mvc/14538127 # 14538127. –

Смежные вопросы