java - Spring Web Flow 空白绑定(bind)应该为 null,而不是空字符串

标签 java spring thymeleaf spring-webflow

给定以下 View 状态和绑定(bind):

<view-state id="updatePartner" view="/partners/partnerForm" model="partner">
    <binder>
        <binding property="name" required="true" />
        <binding property="address" required="true" />
        <binding property="address2" />
        <binding property="city" required="true" />
        <binding property="state" required="true" />
        <binding property="zip" required="true" />
        <binding property="phone" required="true" />
    </binder>
    ...
</view-state>

我在地址2 中得到了一个带有“”的合作伙伴对象。我想要一个空值。

如何强制使用 null 而不是空白字符串?我想避免将空白字符串强制转换为 null 的显式 POJO setter。

我查看了转换器,但它们似乎从一种类型转换为另一种类型(即字符串到长整型等),并且我认为如果我创建一个转换器将所有字符串转换为字符串,则会为应用程序带来额外的工作并让它删除空白字符串,此外,理论上这可能会破坏我不想碰的其他东西。

我已经看到了 StringTrimmerEditor 选项 ( https://stackoverflow.com/a/2977863/3810920 ),并且我可以看到 InitBinder 方法被调用,但我的 POJO 在 address2 中仍然有“”。

谢谢!

最佳答案

您可以创建自定义转换器:

public class EmptyStringToNullConverter extends StringToObject {

    public EmptyStringToNullConverter() {
        super(String.class);
    }

    @Override
    protected Object toObject(String string, Class targetClass) throws Exception {
        return StringUtils.isNotBlank(string) ? string : null;
    }

    @Override
    protected String toString(Object object) throws Exception {
        return object.toString();
    }
}

然后添加您的ApplicationConversionService

addConverter("emptyToNullString", new EmptyStringToNullConverter());

然后你可以使用:

<binding property="name" converter="emptyToNullString"/>

关于java - Spring Web Flow 空白绑定(bind)应该为 null,而不是空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36659543/

相关文章:

spring - 属性 th :each is not allowed here(Error in Thymeleaf template)

java - mksdcard(android SDK工具)创建的SD卡镜像已损坏?

java - 无法使用spring将大文件上传到tomcat

json - 如何在 Spring Boot 中覆盖默认的 JSON 响应

spring - hibernate 时存储的 LocalDate 错误

java - Spring MVC/Thymeleaf - 如何使用一个输入字段插入两个不同的表?

java - 声明 LinkedBlockingQueue<String> 时出现 NullPointer 异常

java - 多线程错误

java - 如何使用带有查询参数的 HttpURLConnection PUT?

java - 运行spring应用程序时PropertyAccessorFactory NoClassDefFoundError