Java 在SpringMVC中有没有一种简单的方法可以将空表单输入转换为空字符串?
我使用SpringMVC和SimpleJdbcInsert将对象插入MySQL数据库。我想在数据库中设置空白输入为<代码> null >代码>而不是<代码> '/COD>。我有很多字段,我希望能找到一种不用手动检查每个值的方法 谢谢Java 在SpringMVC中有没有一种简单的方法可以将空表单输入转换为空字符串?,java,spring,spring-mvc,form-submit,Java,Spring,Spring Mvc,Form Submit,我使用SpringMVC和SimpleJdbcInsert将对象插入MySQL数据库。我想在数据库中设置空白输入为 null >代码>而不是 '/COD>。我有很多字段,我希望能找到一种不用手动检查每个值的方法 谢谢 更新 所以我是个白痴。我犯了几个错误,使我相信下面的正确答案是不正确的。我写了一个类似这样的PropertyEditorSupport: class StringEditor extends PropertyEditorSupport { public void set
更新 所以我是个白痴。我犯了几个错误,使我相信下面的正确答案是不正确的。我写了一个类似这样的PropertyEditorSupport:
class StringEditor extends PropertyEditorSupport {
public void setAsText(String text) {
String value = text.trim();
if ("" == value) {
setValue(null);
} else {
setValue(value);
}
}
}
有两个问题:
usingColumns
哦,我建议您始终对输入进行消毒…也许您可以使用一个您要找的类是:
org.springframework.beans.propertyeditors.StringTrimmerEditor
如果使用true
构造它,它会将空/空白字符串转换为null。如何将其注册到活页夹取决于您希望它是默认视图还是仅应用于某些视图
e、 例如,在单个控制器上,您只需添加
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}
我知道这很旧,但我浪费了大约2或3个小时,直到我找到了一种非常简单的方法,为我所有的控制器应用带有活页夹的
StringTrimmerEditor
再一次:我必须记住RTFM
在Spring3.2中,您可以创建一个@ControllerAdvice
-annotated控制器类,并使用@InitBinder
-annotated方法,就像@Affe给出的示例一样
以下是一个例子:
@ControllerAdvice
@Controller
public class AppBindingInitializer {
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}
}
希望它能帮助别人。介意告诉我如何将默认值设置为NULL吗?我得到的是空字符串,所以我猜NULL不是默认值。我认为这是默认值,但您也可以向每个字段添加一个显式的默认NULL子句。注意-注意我的删除-我最初是在SimpleJdbcInsert类的上下文之外阅读的。好的,我有数据库的默认NULL。我以为您指的是一种将null设置为表单上空输入的默认java字符串结果的方法!使用columns(我认为)的问题在于它将(String…)作为参数-我需要对它们进行硬编码,而不是在运行时通过检查值动态创建字符串参数列表。我还可以让getter为空字符串返回null,这似乎是可以比较的,但同样意味着检查每个值。尝试setValue(null)会给我留下字符串==“null”(四个字母的单词“null”,而不是值null)。不完全是我要找的!您不能返回
null
String吗?自定义活页夹是正确的。在这里您可以看到这个Strings==“null”
;你在做什么?是否正在构建SQL字符串,如果是,请不要。使用预印本。这只适用于旧版本的Spring吗?我使用的是2.5.5,但它不起作用,即使使用StringTrimmerEditor也是如此。我绑定到的对象正在获取一个值为“null”的字符串。我可以将对象传递回一个新的网页,我将有文本“null”,因此这与SQL无关。所以我一直认为这只适用于旧版本的Spring。还可能是什么?请看我对Bozho的评论,关于registerCustomEditor在Spring 2.5.5中不起作用,我不能对2.5.5起誓,但我非常肯定在2.5.6和3中它将字符串设置为null引用,它不会设置值为“null”的字符串也许如果你在问题中添加了冒犯性的代码,我们可以提供更多帮助?请参阅我对原始帖子的编辑。我的错,谢谢你的耐心。只是一个警告:@InitBinder
只能配置@modeldattribute
注释参数的绑定。对于带注释的参数,@RequestBody
是没有用的。为什么在同一个bean上需要@Controller
和@ControllerAdvice
注释?很抱歉。现在不记得了,在谷歌上找不到原因。:)