给定以下 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/