【问题标题】:Error 400 while using StringTrimmerEditor in Spring MVC在 Spring MVC 中使用 StringTrimmerEditor 时出现错误 400
【发布时间】:2013-06-24 10:15:52
【问题描述】:

我们正在使用 Spring MVC 3.2.3.RELEASE(注释)和 google app engine 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,它工作得非常好,我们在这里遗漏了什么吗?非常感谢您提前提供帮助。

【问题讨论】:

    标签: spring-mvc


    【解决方案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 进行测试时一定在某个地方犯了错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      • 2017-04-09
      • 1970-01-01
      相关资源
      最近更新 更多