Spring MVC更新Joda时间

时间:2014-08-14 16:05:29

标签: java spring spring-mvc time jodatime

我正在尝试更新Joda DateTime,但它不想正常工作。当我点击“Tomorrow's parties”按钮时,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>

2 个答案:

答案 0 :(得分:0)

当您第一次在JSP“明天”按钮中单击时,您将获得jsp上的明天日期,这是您的第一次点击。
一旦你有了明天的日期,然后在下一次点击后将这个现有的日期再次点击到你的方法,之后将该值指定为新的日期并将其增加一。

其他方法:
您也可以使用计数器并在每次点击时增加计数器并将此计数器传递给您的方法并将其添加到您的日期。

即。 在jsp for counter中再创建一个hiddnen变量,一旦jsp加载,从jsp传递此值为1。点击你的方法后再添加一个并明天去。

答案 1 :(得分:0)

我只是想感谢你们真的帮助我!我解决了我的问题。这是我的解决方案。

JSP with Spring form:

    <form:form action="parties" method="post">
      <input type="hidden" name="day" value="${date.getDayOfYear()+1)}" />
      <input type="submit" value="Tomorrow's parties" />
    </form:form>

控制器:

   @RequestMapping("/parties")
   public String listOfParties(@ModelAttribute("day") String day, Model model) {

   DateTime date = partyManager.newDay(day);
   model.addAttribute("parties", partyManager.findAllTodayParties());
   model.addAttribute("date", date);
   return "/parties";
   }

   @RequestMapping(value = "/parties", method = RequestMethod.POST)
   public String nextDay() {    
   return "redirect:/parties";
   }

PartyManager类中的newDay(day)方法:

   public DateTime newDay(String day) {
   int dayNumber = 0;
   if (StringUtils.isEmpty(day)) {  // Check whether the given String is empty
        dayNumber = new DateTime().getDayOfYear();
   } else {
        dayNumber = Integer.parseInt(day); }
   int newDayNumber = dayNumber;
   DateTime newDate = new DateTime().withDayOfYear(newDayNumber);
   return newDate;
}