Spring Boot + Thymeleaf:将空表单输入绑定到NULL-string

时间:2015-05-25 11:46:33

标签: spring-mvc spring-boot thymeleaf

我有一个非常简单的Spring Boot + Thymeleaf应用程序,它有一个表单和一个pojo作为表单的支持模型。

支持模型具有单个字符串属性,默认情况下为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>

但是,无论何时提交表单,该值都将设置为&#34;&#34; (空字符串)而不是空值。

是否有一种简单的方法可以将属性设置为null而不是空字符串?

可以在https://github.com/smilingj/springboot-empty-string-to-null找到正在运行的示例项目。

1 个答案:

答案 0 :(得分:4)

将启动器添加到控制器

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

参考官方参考

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