我有一个Spring控制器方法,它有两个对象参数:
@GetMapping
public List<Car> getCars(BlueBookCar blueBookCar, AutoTraderCar autoTraderCar)
字符串BlueBookCar
和AutoTraderCar
都有一个名为id
的字段。我希望HTTP GET请求中的查询参数名称id
仅绑定到BlueBookCar
示例。
例如:
http://localhost/cars?id=123
型
应该导致blueBookCar
具有id
等于123。autoTraderCar
id应该为空。相反,Spring将两个对象都设置为id
为123。
如何告诉Spring排除autoTraderCar
的id
绑定?应该设置其他autoTraderCar
字段,这些字段的名称与查询参数名称匹配(Spring通常会这样做)。
更新
我想指出的是:
1.我不希望HTTP客户端知道两种类型的汽车的存在,BlueBookCar
和AutoTraderCar
1.除了id
之外,两种类型的汽车的所有属性都不同。以后其他属性可能会重叠。
1.我不想创建第三个类,因为维护的原因和类之间的关系,从这两个类的属性集。
ASP.NETMVC支持属性绑定排除。请参阅https://stackoverflow.com/a/8332917/1706691。Spring支持这个吗?
1条答案
按热度按时间p5cysglq1#
您可以使用
@InitBinder
,它允许您访问WebDataBinder
,以自定义如何将来自http请求的数据绑定到控制器方法中的特定参数对象。在您的情况下,添加以下内容应该可以解决您的问题:
字符串