我有一个 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
失败(可以理解),正如这里和这里所讨论的,在 GET 上使用实际的请求正文是不可取的。
有没有办法让 Spring MVC 支持将多个@RequestParam
's 编组为 GET 请求上的强类型对象?