首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将URL查询字符串参数追溯绑定到Spring MVC中的对象

将URL查询字符串参数追溯绑定到Spring MVC中的对象
EN

Stack Overflow用户
提问于 2015-08-05 00:23:51
回答 1查看 821关注 0票数 0

我有一个通用的控制器,有很多方法,支持各种查询参数组合和媒体类型。在派生这个控制器的子类时,我想添加一些额外的查询字符串参数绑定。但是,由于不可能覆盖@RequestMapping注释,因此最好的做法似乎是使用一个覆盖方法,该方法从每个方法获取HttpServletRequest并输出定制的映射对象:

代码语言:javascript
复制
public class GenericController<T,ID>{

    @RequestMapping(value = "/search", method = RequestMethod.GET, 
        produces = { MediaType.APPLICATION_JSON_VALUE })
    public HttpEntity findById(HttpServletRequest request){
        Map<String,Object> params = queryStringToParams(request.getParameterMap());
        List<T> results = repository.find(params);
        return new ResponseEntity<>(results, HttpStatus.OK);
    }

    protected Map<String,Object> queryStringToParams(Map<String,String[]> qsParams){
        // magic happens here
    }

}    

我的问题是:在解析控制器方法参数之后,是否可以利用Spring用来转换@RequestParam参数的现有参数解析器的功能?将查询字符串格式的字符串参数转换为Java对象的功能显然已经在这里实现了,如果必须编写我自己的对象映射器,那就太愚蠢了。

EN

回答 1

Stack Overflow用户

发布于 2015-08-07 22:40:39

原来我要找的是Spring的ConversionService。我可以通过注入容器现有的ConversionService...

代码语言:javascript
复制
@Autowired ConversionService conversionService;

...
Float number = conversionService.convert((String) qsParams.get("number")[0], Float.class);
...

..。这具有包括可能已经创建的任何定制转换器的好处。或者,我可以使用默认的ConversionService实现DefaultConversionService

代码语言:javascript
复制
ConversionService conversionService = new DefaultConversionService();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31814463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档