我正在使用@RestController
创建spring-mvc
来处理以下网址:
/api/products?attributes=brand:Audi,Mercedes&attributes=sector:Cars&...
我想在相应的方法中提取@RequestParam List<AttributeValues> attributes
。
AttributeValues.class
确实有一个String name
和Set<String> values
,稍后会用它来检索与此查询匹配的产品。
我尝试使用WebArgumentResolver
,但这显然不适用于列表。我正在寻找有关的任何建议:
Product.class
有Set<Attribute> attributes
,因此我无法使用/api/products?brand=Audi,Mercedes§or=Cars
等网址,因为这些属性可能会干扰Product.class
上的属性。
感谢您的帮助和建议。
答案 0 :(得分:1)
使用@RequestParam
,您无法绑定到List<AttributeValues>
,因为编译时会丢失泛型类型信息。
但您可以绑定到数组:@RequestParam AttributeValues[] attributes
。
如果你真的想要List
,另一种可能性是使用自定义注释并实现HandlerMethodArgumentResolver
来检查参数是否具有该注释,并将参数解析为{{1 }}
List