有没有一种简单的方法可以将空的Java / Spring表单输入转换为空字符串?
有没有一种简单的方法可以将空表单输入转换为java中的空字符串? 我正在使用spring mvc和SimpleJdbcInsert将对象插入MySQL数据库。 我想在数据库中将空白输入设置为NULL而不是”。 我有很多字段,我希望有一种方法可以做到这一点,而无需手动检查每个值。
谢谢!
编辑 – 所以我是个白痴。 我的几个错误使我相信下面的正确答案是不正确的。 我写了一个propertyEditorSupport,如下所示:
class StringEditor extends PropertyEditorSupport { public void setAsText(String text) { String value = text.trim(); if ("" == value) { setValue(null); } else { setValue(value); } } }
两个问题 – 首先,没有getAsText,所以我的表单填充了“null”字符串! 2,我的等式检查是C ++,而不是java。 当我尝试推荐的setter时,我只是重新加载了已经包含“null”字符串的post。 一旦我清理了所有这些,一切都开始工作了。 感谢您的帮助,对不起我的“操作员错误”!
布雷特
您正在寻找的课程是:
org.springframework.beans.propertyeditors.StringTrimmerEditor
如果用true
构造它,它会将空/空白字符串转换为null。 如何将其注册到活页夹取决于您是希望它是默认值还是仅适用于某些视图。
例如,在一个控制器上,你可以添加
@InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(String.class, new StringTrimmerEditor(true)); }
这里的说明
我知道这是旧的,但我浪费了大约2或3个小时,直到我找到一种非常简单的方法来为我的所有控制器应用带有活页夹的StringTrimmerEditor
。
再一次:我必须记住RTFM。
在Spring 3.2中,您可以创建一个@ControllerAdvice
-annottated控制器类,并使用@InitBinder
-annotated方法,就像@Affe给出的示例一样。
这是一个例子:
@ControllerAdvice @Controller public class AppBindingInitializer { @InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(String.class, new StringTrimmerEditor(true)); } }
希望它可以帮到某人。
也许你可以使用自定义Binder
将可选字段的默认值设置为NULL – 实际上默认情况下它不是NULL吗?
解析输入字符串,然后显式指定仅填充的列
usingColumns
哦,我建议总是消毒你的投入……