ewe*_*nli 5 java rest pagination playframework
通常,用户进行搜索,获取命中列表,然后可以浏览它.hitlist是一个中间结果,在整个浏览过程中保持一致,通常存储在会话状态中.例如,如果新项目由其他项目同时添加,则它们仅出现在后续搜索中.
在REST应用程序中,我不能轻易获得这个中间结果 - 它既不属于客户端,也不属于模型.我在REST网络应用程序中阅读了分页,但我的答案并不完全清楚.那里的解决方案似乎假设在用户浏览结果时不更新模型.
我们当然可以将世界(模型)想象成一系列不可变的快照.通过提供一个时间戳(或全球版本号),我们就得到了模型的一致视图在那个时候,这从概念的角度来看解决了这个问题.但它确实意味着模型的完整版本.(我也想知道是否有与函数式编程相关的连接)
我该如何处理这个问题?
注意:我问,因为我打算使用play框架,它根本没有HTTP状态或会话的概念; 这是纯粹的宁静.
在第一次搜索得到查询结果后,您可以将结果保存在缓存中.对于一个服务器,它可以是群集环境的ehcache(在播放中支持)或memcached(也由播放支持).您可以使用静态名称+会话ID保存结果.因此,您只需要每个请求的会话ID,它将保存在客户端cookie中,并在您的播放应用中提供.您可以使用缓存数据来浏览页面.我也推荐ElasticSearch.
编辑:更好的方法是你可以使用play-search http://github.com/jfp/play-search,示例:
Query q = Search.search("object:dogs", Folder.class);
q.orderBy("object")
.page(2,5)
.reverse();
Run Code Online (Sandbox Code Playgroud)
PS:你对Play的决定是完美的.我是一名专业的.net开发人员,我可以说世界上唯一可以与asp.net mvc 2竞争的(最佳)Web框架是Play框架.Grails是buggy,Django/Python,Yii/Php,Rails都很慢,不是类型安全而且远离jvm/clr框架.wicket,挂毯,struts,jsf,spring mvc都是冗长无用的.spring roo只是一个模板生成器.Asp.net mvc超越了asp.net并成为.net的第一开发平台,但是sun为一个旧的asp.net克隆用jsf为下一代,大错.在我看来,java的唯一希望就是玩框架.使用scala模块,它是完美的......
我有点不知道你的上下文是什么,但如果我必须提供一个简短的答案,那就是搜索结果应该是模型的一部分。我假设你有一个可搜索的模型。您要做的就是对搜索所需的部分进行索引并存储索引信息(使其也成为模型的一部分)。当您执行搜索时,您会查询索引并显示结果。除非重新生成索引,否则第二次执行搜索将不会包含新添加的项目。
这消除了使用任何会话状态的需要并保持其安静,因为索引只是对资源执行的另一个操作。这是你需要的吗?
归档时间: |
|
查看次数: |
4100 次 |
最近记录: |