【发布时间】:2014-10-08 09:00:57
【问题描述】:
我正在尝试更新 Joda DateTime,但它不想正常工作。当我单击“明天的聚会”按钮时,jsp 用明天的第二天日期重新加载我的 jsp,但是当我再次单击按钮时,jsp 不会用新日期重新加载。谁能帮我解决这个问题?
这是我的控制器:
@RequestMapping("/parties")
public String listOfParties(@ModelAttribute("tomorrow") String day, Model model, Principal principal) {
DateTime today = new DateTime();
if (day.equalsIgnoreCase("Tomorrow")) {
today = today.plusDays(1);
}
DateTime date = today;
model.addAttribute("parties", partyManager.findAllTodayParties());
model.addAttribute("date", date);
return "/parties";
}
@RequestMapping(params = "Tomorrow", value = "/parties", method = RequestMethod.POST)
public String nextDay() {
return "redirect:/parties";
}
这是我的带有 Spring 表单的 jsp 更新日期:
<form:form action="parties" method="post">
<input type="hidden" name="tomorrow" value="Tomorrow" />
<input type="submit" value="Tomorrow's parties" />
</form:form>
【问题讨论】:
-
删除了之前的评论 - 这就是你想要做的:用户点击明天按钮,你将日期向前移动 7 天并找到当天的各方。那么如果用户再次点击,您希望日期提前两周(从原始日期开始)?如果是这样,为什么要调用'DateTime today = new DateTime();'不会带您回到原来的日期(而不是提前 7 天,您可以再申请几天)
-
对不起,我编辑了我的代码。必须是 today.plusDays(1)。是的,当用户单击按钮两次时,他无法提前两天移动,如果我添加“昨天”按钮,我也会遇到同样的问题。
-
您总是以
new DateTime()开头,它始终是当前日期(对于 JVM 的时区)。您必须将开始日期更改为相对于之前确定的日期。 -
我知道我必须更改开始日期,但我不知道该怎么做。
-
您需要将日期作为输入传递(而不是将其以某种方式缓存在服务器上,而是将其从客户端发送到服务器,其中日期最终将成为输入。如果没有输入,使用新的 Date 调用(获取当前日期)
标签: java spring spring-mvc time jodatime