【发布时间】:2012-01-12 19:54:29
【问题描述】:
出于分页的目的,我们的 UI 人员在 Http 标头中指定项目范围,如下所示:
Range: items=0-15
在随后的请求中,来自网络的范围可以是
Range: items=16-31
Range: items=32-45
...等...等
在我的控制器 SearchRequestController.java 中,我试图提取这些范围,以便我可以将其发送到 Solr 服务器,以通过设置开始和偏移量来返回请求的卡盘中的值。
我正在做的事情如下(在 SearchRequestController.java 中):
@RequestMapping("/billsSearch")
@ResponseBody
public SearchResult searchBills(HttpServletRequest request,@RequestBody SearchRequest searchRequest){
String rangeRequest = request.getHeader("Range");
//(1)Parse the rangeRequest using some mechanism
//(2)Set the start using the first value of the range
//(3) Add the second value to the start to get the offset
searchRequest.setStart(startValue);
searchRequest.setOffset(offsetValue);
return searchHelper(request,searchRequest);
}
我有几个问题: 这是从服务器以分块方式请求数据的最佳方式吗?
如何从请求标头中提取范围?
我假设request.getHeader("Range") 将返回“items=16-31”。
正则表达式是从这个字符串中获取 16 和 31 的最佳方式吗?
如果我决定使用正则表达式,如果我将范围标题更改为 billItems=16-31,表达式会不会中断?
我是一个正则表达式 n00b,所以我很可能以错误的方式思考这个问题。
是否有替代正则表达式的方法来从 SpringMVC 中的 http 标头解析此类范围信息?
【问题讨论】:
标签: java spring-mvc solr pagination range