【问题标题】:How to reset counter on zero on API controller如何在 API 控制器上将计数器重置为零
【发布时间】:2022-08-19 06:29:05
【问题描述】:

我有一个 API,每次调用都会从 Mongo 集合中返回一个随机文档。

这是代码:

AtomicInteger countSummerCamps= new AtomicInteger();

    @GetMapping(\"/getRandomSummerCamps\")
    public String getRandomSummerCamps(Model model) {

        countSummerCamps.incrementAndGet();

        if (getCountSummerCamps() <= adventureHolidaysService.countAdventureHolidays(\"summerCamps\")) {
            model.addAttribute(\"randomSummerCamps\", adventureHolidaysService.findRandomAdventureHolidays(\"summerCamps\"));

            return \"randomSummerCamps\";

        } else {

            return \"noMoreDoc\";
        }
    }

我的问题是什么以及我是如何尝试的。

所以在这种情况下,程序会返回 4 个 HTML 元素。之后该程序将显示一个noMoreDoc 页面。这很好用。但问题是当我刷新页面时,它仍然是页面noMoreDoc,即使我进入主页并再次点击 API,它仍然是 noMoreDoc 页面。我想避免这种情况,在用户刷新页面并返回/getRandomSummerCamps 后,在每次通话时再次向他展示随机文档。

我试图在}else{ 中设置counterSummerCamps.set(0),但我得到了Unreachable statement。

有没有办法解决这个问题,所以在用户获得noMoreDoc 页面之后,在他以任何方式返回/getRandomSummerCamps 之后,在每次通话时再次向他展示随机文档?

我尽我所能解释我尝试了什么以及我的问题是什么,请随时问我任何问题,以便我给出更好的解释。谢谢

  • 您正在尝试实现分页,但问题是 HTTP 是一个无状态协议,并且您正在增加后端的变量,而不是我建议您将逻辑移动到前端(即)发送尝试访问的元素的编号并返回相应的元素,如果超出则以这种方式返回“noMoreDoc”,即使页面刷新它也会在前端设置为零。
  • 我怎么能在前面消费这个? adventureHolidaysService.countAdventureHolidays(\"summerCamps\")) { 这里我调用计算集合中有多少元素的方法

标签: java


【解决方案1】:

如果在 else 的 return 语句后调用counterSummerCamps.set(0),会得到无法访问的代码。尝试在 return 语句之前设置它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-17
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2015-02-09
    • 2021-05-30
    • 1970-01-01
    相关资源
    最近更新 更多