【发布时间】:2013-02-07 09:49:15
【问题描述】:
我有一个 Spring MVC 控制器,它为 GET 请求提供服务,以执行搜索。
这些请求有许多可选参数,可以在查询字符串中传递。
例如:
@Data
public class SimpleSearchRequest implements SearchRequest {
private String term;
private List<Status> stati;
@JsonDeserialize(using=DateRangeDeserializer.class)
private Range<DateTime> dateRange;
}
如果我为此使用 POST 或 PUT,我可以使用 @RequestBody 很好地编组入站请求。但是,因为我使用的是 GET,所以这似乎不合适。
相反,我似乎需要将方法签名上的所有可能参数列为@RequestParam(required=false)。
除了导致丑陋的方法签名之外,我还因为不在这里使用类而失去了各种面向对象的优点。
尝试使用@RequestBody 失败(可以理解),正如here 和here 所讨论的,在GET 上使用实际的请求正文是不可取的。
有没有办法让 Spring MVC 支持在 GET 请求上将多个 @RequestParam 编组为强类型对象?
【问题讨论】:
标签: java spring spring-mvc