在 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));
}
会话为空的原因是什么?如何实现保存输入值?先感谢您。
清除缓存解决了问题。
我正准备在 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));
}
会话为空的原因是什么?如何实现保存输入值?先感谢您。
清除缓存解决了问题。