分页列表,删除最后一页的最后一条数据的场景该怎么处理

2019-09-10 19:09:09 +08:00
 rizon
不知道行业里通用方案怎么处理。删除最后一条数据后,由于前端请求传的页码已经是不存在的页码了,所以会返回空白。
期望的效果是自动返回真实的最后一页的数据,也就是页码自动-1。
这东西后台处理还是前端处理?
后台是 java。
5098 次点击
所在节点    程序员
28 条回复
paodange
2019-09-10 19:33:10 +08:00
后台不是会返回 pagecount 吗?跟当前页码比较一下,如果小于当前页码,就把当前页码设置为 pagecount
limuyan44
2019-09-10 20:00:09 +08:00
服务端查不到就返回最后一页吧,前端哪知道你还有没有新的数据了。
ayonel
2019-09-10 20:39:16 +08:00
每次切换页面的时候也给前端返回总数据量,让前端根据这个数字动态分页
chinvo
2019-09-10 20:42:37 +08:00
count: xxx
amount: xxx
offset: xxx
data
- obj
- obj

count 为 0 的时候现实一个占位符

一定要前一页的话前端重新请求 offset = offset - count
optional
2019-09-10 20:53:07 +08:00
relay 分页
optional
2019-09-10 20:53:42 +08:00
看错了。
xuanbg
2019-09-10 21:53:47 +08:00
当然是前端处理咯,这个不是分页控件应该实现的功能么?
shintendo
2019-09-10 22:03:12 +08:00
后端好一点吧,前端处理的话要多请求一次
Sendya
2019-09-11 01:58:03 +08:00
hyyou2010
2019-09-11 03:20:18 +08:00
恰好我前不久碰到这个问题了。最初的想法是后端处理,后端送回最后一页,也送回总数等等,但是发现这个好心帮忙反而容易导致前端状态系统紊乱。后来改成前端处理,也就是后端返回空内容及文档总数,由客户端根据情况再次请求数据。改成前端处理虽然多了一次访问,但是状态流程顺畅了,舒服。

不仅仅是你删除最后一条或一页数据,还可能其他用户删除该数据也导致同样的问题。
pinews
2019-09-11 07:42:06 +08:00
这个东西,就是通用性与便捷性的冲突,如果你知道根本不存在数据为 0 的情况,你可以不必处理,如果你要预期这个结果,而且具有通用性,就要数据为 0 的时候就返回数据为 0 的状态,正常数据的时候也要返回额外的正常状态。不管怎么样,前端都要先检查状态,再处理数据。
pinews
2019-09-11 07:45:15 +08:00
@hyyou2010 关于这个可以看各大网站的 api 是怎么描述的,确实如 @chinvo 所言。
LeeSeoung
2019-09-11 09:30:03 +08:00
后端接口不用设计太复杂 按照当前分页、当前页数据数量作为参数就行,其他的前端处理。
ssvfdn
2019-09-11 10:32:27 +08:00
删除最后一页的最后一条数据的时候,自动-1 请求。如果当前页只有 1 页就不用请求了。
aguesuka
2019-09-11 10:41:01 +08:00
删除以后刷新页面,pageindex=min(pagesize,querypagesize)
hyyou2010
2019-09-11 10:47:12 +08:00
@ssvfdn 自动减 1 可能不行,设想你正浏览第 3 页,版主恰好把第 2 及 3 页都删除了
mamahaha
2019-09-11 12:11:30 +08:00
路由上带后缀的,如果数据发生了变化,那返回时肯定不能是 return back()了。
shintendo
2019-09-11 12:28:00 +08:00
@hyyou2010 但是可能有这种情况:前端第一次请求之后,第二次请求之前,有另一个用户加了一条数据,结果就是数据总数没变,页码却往前翻了一页
CEBBCAT
2019-09-11 12:42:37 +08:00
据一个普通网民的经验:有的网站 只有 28 个 page,但?page=99 时也有内容,只不过内容是最后一页的
lithium4010
2019-09-11 13:08:54 +08:00
列表接口要返回

总条数
当前页数
总共页数

其他前端处理就行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/599750

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX