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

customize binding request parameters and fileds inside the accepted to controller method bean in spring mvc

我有以下 class:

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

和以下 url:

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。

我无法更改请求 url。

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

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

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

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

添加以下活页夹后即可运行:

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