在Spring MVC中使用StringTrimmerEditor时出错400

时间:2013-06-24 10:15:52

标签: spring-mvc

我们正在使用Spring MVC 3.2.3.RELEASE(注释)和谷歌应用引擎1.8.0。

我们添加了一个StringTrimmerEditor,用于将表单中的空字符串转换为空值,并且工作正常,但作为副作用,所有在控制器中使用@RequestParams的方法都希望填充所有@RequestParams,否则它们会抛出http错误400.我们尝试使用不同的@RequestParam设置,如(required = false)和(defaultValue =“some value”),但它无效。

这是我们如何使用它

@ControllerAdvice
public class ControllerSetup
{
    @InitBinder
    public void initBinder ( WebDataBinder binder )
    {
        StringTrimmerEditor stringtrimmer = new StringTrimmerEditor(true);
        binder.registerCustomEditor(String.class, stringtrimmer);

    }
}

控制器

@RequestMapping(value="/addreportitems", method=RequestMethod.POST)
    public String saveEditForm(@ModelAttribute DCReport dcReport,
            @ModelAttribute("loggedInEmployee") Employee someEmployee,
            @RequestParam Integer someInteger,
            Model m) {
....
}

如果我们不在表单中添加someInteger,则会出错 错误400必需整数参数'someInteger'不存在

如果我们删除StringTrimmer,它完全正常,我们在这里遗漏了什么吗?非常感谢您提前帮忙。

1 个答案:

答案 0 :(得分:1)

以下内容对我有用:

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

@ResponseBody
@RequestMapping("/foo")
public String renderFoo(@RequestParam(required=false) String bar) {
    return bar;
}

当您使用required=false进行测试时,您肯定在某处犯了错误。