在JSTL / JSP中,给定java.util.Date,我如何找到第二天?

在JSTL / JSP页面上,我的应用程序中有一个java.util.Date对象。 我需要找到该对象指定的日期的第二天。 我可以使用放入Java并使用java.util.Calendar进行必要的计算,但这对我来说感觉笨拙和不优雅。

是否有某种方法可以使用JSP或JSTL标记来实现这一目标,而无需切换到全面的Java,或者后者是实现此目的的唯一方法?

我不喜欢把java代码放在你的jsp中。

我将使用静态方法和taglib来实现此目的。

只是我的想法。 有很多方法可以解决这个问题。

public static Date addDay(Date date){ //TODO you may want to check for a null date and handle it. Calendar cal = Calendar.getInstance(); cal.setTime (date); cal.add (Calendar.DATE, 1); return cal.getTime(); } 

functions.tld

   functions library functions 1.1 xfn http://yourdomain/functions.tld   Adds 1 day to a date.  addDay Functions java.util.Date addDay(java.util.Date)  ${xfn:addDay(date)}    

虽然这不能回答您的初始问题,但您可以通过这样做消除通过java.util.Calendar的麻烦:

 // Date d given d.setTime(d.getTime()+86400000); 

您必须使用scriptlet或编写自己的标记。 对于记录,使用日历将如下所示:

 Calendar cal = Calendar.getInstance(); cal.setTime (date); cal.add (Calendar.DATE, 1); date = cal.getTime (); 

真的太可怕了。

遗憾的是,我所知道的标准JSP / JSTL库中没有标记可以让您进行此日期计算。

最简单,最不优雅的解决方案是使用一些scriptlet代码进行计算。 您已经说过,您认为这是一个笨重的解决方案,我同意您的看法。 如果我是你,我可能会写一个自定义JSP taglib来获取它。

总的来说,我认为JSP不应该有数据逻辑。 他们应该从Controller获得他们需要显示的所有数据,他们所有的逻辑应该是关于数据的显示方式,而不是显示什么。 与添加自定义标记相比,这通常更简单,代码/ XML也更少。

如果没有重复使用,那么一个小小的scriptlet真的比taglib XML更糟糕吗?