jax*_*jax 3 spring spring-mvc spring-rest
我想在我正在编写的 REST API 中允许分页。我想发送如下请求
GET /people?page[number]=1page[size]=25
Run Code Online (Sandbox Code Playgroud)
或者可能
GET /people?page.number=1page.size=25
Run Code Online (Sandbox Code Playgroud)
然后
@RequestMapping(value = "/people", params = { "page" })
public void findAll(@RequestParam("page") PaginationInformation paginationInformation) {
}
Run Code Online (Sandbox Code Playgroud)
PaginationInformation只是一个普通的老用POJOnumber和sizegetter和setter方法。
在最新版本的 Spring 中,这样的事情可能吗?我意识到我可以只传递pageNumber和pageSize绑定为整数,但我宁愿使用和对象,因为我还想支持过滤,这将更加复杂。
您可以将请求参数绑定到 Spring 中的自定义模型对象,如下所示:
public class Page {
private int pageOffset;
private int pageSize;
// Getters and setters omitted
}
@RequestMapping("/people")
public void findAll(Page page) {
}
Run Code Online (Sandbox Code Playgroud)
如果您发送这样的请求,GET /foo?pageOffset=0&pageSize=25那么page参数将填充这些值。另请注意,没有@RequestParam注释。
解析的Page对象将在后台提供给处理程序ServletModelAttributeMethodProcessor,因此请随时查看其源代码以获取更多详细信息。
如果您需要更灵活地自定义分页参数的分辨率,您可以实现 custom HandlerMethodArgumentResolver. 您可以使用PageableHandlerMethodArgumentResolver从春天JPA的数据,如果你决定走这条路作为灵感(或使用Spring数据JPA的持久层)。
| 归档时间: |
|
| 查看次数: |
4840 次 |
| 最近记录: |