提问者:小点点

错误400而使用StringTrimmerEditor在SpringMVC


我们正在使用SpringMVC3.2.3。发布(注释)与谷歌应用引擎1.8.0。

我们添加了一个StringTrimmerEditor,用于将表单中的空白字符串转换为空值,它运行良好,但作为副作用,所有在控制器中使用@Request estParams的方法都希望填充所有@Request estParams,否则它们会引发超文本传输协议错误400。我们尝试了不同的@Request estParam设置,如(必需=false)和(defaultValue="一些值"),但它不起作用。

以下是我们如何使用它

@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) {
....
}

如果我们不在表单中放置一些整数,我们会收到错误错误400所需整数参数“一些整数”不存在

如果我们删除StringTrimmer,它工作得非常好,我们在这里错过了什么吗?非常感谢您的帮助。


共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;
}

当您使用必需=false进行测试时,您一定在某个地方犯了错误。