给出以下视图状态和绑定:
<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>
我正在使用&#34;&#34;获得合作伙伴对象在地址2。我想要那里的空白。
如何强制使用null而不是空字符串?我想避免明确的POJO设置器将空字符串强制转换为nulls
。
我看过转换器,但是那些似乎从一种类型转换为另一种类型(即String转换为Long等),如果我创建了一个转换器来将所有字符串转换为字符串,我认为它将为应用程序创建额外的工作并且它删除了空白字符串,此外,理论上可以打破其他我不想触及的事情。
我已经看过StringTrimmerEditor选项(https://stackoverflow.com/a/2977863/3810920),我可以看到InitBinder方法被调用,但我的POJO仍然有&#34;&#34;在地址2中。
谢谢!
答案 0 :(得分:1)
您可以创建自定义转换器:
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"/>