【问题标题】:Spring MVC - Is it possible to receive a strongly typed request object on a GET?Spring MVC - 是否可以在 GET 上接收强类型请求对象?
【发布时间】: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 失败(可以理解),正如herehere 所讨论的,在GET 上使用实际的请求正文是不可取的。

有没有办法让 Spring MVC 支持在 GET 请求上将多个 @RequestParam 编组为强类型对象?

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    似乎答案是简单地删除注释。

    这行得通:

    @RequestMapping(method=RequestMethod.GET)
    public @ResponseBody List<Result> search(SearchRequest request) {}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 2011-01-23
      • 2014-08-24
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      相关资源
      最近更新 更多