在 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);
}
});
}
我有以下 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);
}
});
}