gst*_*low 11 spring spring-mvc model-binding spring-mvc-initbinders
我有以下课程:
public class MyDTO {
private String kiosk;
...
}
Run Code Online (Sandbox Code Playgroud)
和以下网址:
http://localhost:1234/mvc/controllerUrl?kiosk=false
Run Code Online (Sandbox Code Playgroud)
并遵循控制器方法:
@RequestMapping(method = RequestMethod.GET, produces = APPLICATION_JSON)
@ResponseBody
public ResponseEntity<List<?>> getRequestSupportKludge(final MyDTO myDTO, BindingResult bindingResult) {
...
}
Run Code Online (Sandbox Code Playgroud)
现在它工作得很好,布尔字段正确解析.
现在url参数已经改变如下:
http://localhost:1234/mvc/controllerUrl?new_kiosk=false
Run Code Online (Sandbox Code Playgroud)
我不想在DTO中更改参数名称.有没有办法说spring知道new_kiosk请求参数值应该放在kiosk字段中?
Mas*_*ave 14
除了设置一个额外的setter,你可以通过制作一个自定义参数解析器来处理这个案例.有几种方法你可以解决它,但已经有一个讨论得很好的帖子.如果我是你,我会专注于jkee的回答.一步一步地跟着它,而你应该做的只是用类似的东西来注释你的DTO,
public class MyDTO {
@ParamName("new_kiosk")
private String kiosk;
...
}
Run Code Online (Sandbox Code Playgroud)
请注意,即使您无法更改MyDTO类,仍可以按照自定义解析程序路径进行操作.在这篇文章中,我已经回答了如何编写参数类型注释.结合这两篇文章,您可以轻松地提出一个注释,例如@ParamMapper,它将定义从请求到属性的映射.想想类似的东西
getRequestSupportKludge(@ParamMapper("new_kiosk;kiosk") MyDTO myDTO, BindingResult bindingResult)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5196 次 |
| 最近记录: |