在 Spark Java 中,重定向后会话为空

In Spark Java session is null after redirect

我正准备在 Spark 上创建我的第一个网络应用程序。该应用程序非常简单:它是自定义随机数生成器。

在第一个屏幕上,表格需要两个数字(随机数生成范围)。如果用户的输入值错误,我想将用户重定向到第一个屏幕,并在服务器端进行验证。我还想向用户显示错误的值。

但是,当我尝试重定向到第一页并在 session.attributes 中保存用户输入值时,它们没有被保存,因为会话为空。

我的代码就是这么简单:

public static void main(String[] args) {
        get("/random", (req, res) -> {
            Map<String, Object> model = new HashMap<>();
            if (req.session(false) != null) {
                model.put("from", req.session().attribute("from"));
                model.put("to", req.session().attribute("to"));
            }

            return render(model, "/random/index.hbs");
        });

        get("/random/generator", (req, res) -> {
            // assume we got wrong values (i.e. not integers)
            // from - is a lower bound or random number generation
            // to - is an upper bound of random number generation
            String fromStr = req.queryParams("from");
            String toStr = req.queryParams("to");
            // checking for correctness and actions if correct are not included for brevity
            req.session().attribute("from", fromStr);
            req.session().attribute("to", toStr);
            res.redirect("/random");
            return null;
        });
    }

    private static String render(Map<String, Object> model, String viewName) {
        return new HandlebarsTemplateEngine().render(new ModelAndView(model, viewName));
    }

会话为空的原因是什么?如何实现保存输入值?先感谢您。

清除缓存解决了问题。