有没有一种简单的方法可以将空的Java/Spring表单输入转换为空字符串?

Bre*_*yer 20 java spring spring-mvc form-submit

有没有一种简单的方法可以将空表单输入转换为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);  
        }
    }

}  
Run Code Online (Sandbox Code Playgroud)

两个问题 - 首先,没有getAsText,所以我的表单填充了"null"字符串!2,我的等式检查是C++,而不是java.当我尝试推荐的setter时,我只是重新加载了已经包含"null"字符串的帖子.一旦我清理了所有这些,一切都开始工作了.感谢您的帮助,对不起我的"操作员错误"!

布雷特

Aff*_*ffe 52

您正在寻找的课程是:

org.springframework.beans.propertyeditors.StringTrimmerEditor
Run Code Online (Sandbox Code Playgroud)

如果用true它构造它,它会将空/空白字符串转换为null.如何将其注册到活页夹取决于您是希望它是默认值还是仅适用于某些视图.

例如,在一个控制器上你可以添加

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

这里的说明

  • 只是警告:`@ InitBinder`只能配置@ModelAttribute注解的参数的绑定。它对于@RequestBody注释的参数没有用。 (3认同)

ely*_*sch 11

我知道这是旧的,但我浪费了大约2或3个小时,直到我找到了一个非常简单的方法来StringTrimmerEditor为我的所有控制器应用一个活页夹.

再一次:我必须记住RTFM.

在3.2版本中,您可以创建一个已@ControllerAdvice注释的控制器类,并使用@InitBinder-annotated方法,就像@Affe给出的示例一样.

http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-ann-initbinder-advice

这是一个例子:

@ControllerAdvice
@Controller
public class AppBindingInitializer {

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

}
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助某人.