我们正在使用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,它工作得非常好,我们在这里错过了什么吗?非常感谢您的帮助。
以下对我有用:
@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
进行测试时,您一定在某个地方犯了错误。