在spring mvc中接受到控制器方法bean中的自定义绑定请求参数和文件

时间:2015-05-05 10:10:10

标签: java spring-mvc spring-mvc-initbinders

我有以下课程:

public class MyDTO { 
       @NotEmpty      
       private String isKiosk;
       ...
}

并关注网址:

http://localhost:1234/mvc/controllerUrl?isKiosk=false

并遵循控制器方法:

@RequestMapping(method = RequestMethod.GET, produces = APPLICATION_JSON)
@ResponseBody
public ResponseEntity<List<?>> getRequestSupportKludge(@Valid final MyDTO myDTO, BindingResult bindingResult) {
    ...
}

当我在getRequestSupportKludge方法的调试中停止时,我看到myDTO.isKiosk等于null。

我无法更改请求网址。

在哪里可以为我的请求参数配置映射?

2 个答案:

答案 0 :(得分:0)

您需要使用@QueryParam来获取控制器中的值。什么是绑定isKiosk到myDTO?当您请求上述URL时没有任何内容。如果您使用某些视图技术和表单来提交数据,则将表单变量绑定到对象非常重要。

另一种方法是你可以将myDTO公开为ModelAttribute并使用

public xxxx controllerMethod(@ModelAttribute("myDTO") MyDTO myDTO, ...) {}

答案 1 :(得分:0)

在添加以下活页夹后它正在工作:

@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(String.class, "isKiosk", new PropertyEditorSupport() {
        public void setAsText(String name) {
            setValue(name);
        }
    });
}