在JSTL / JSP页面上,我的应用程序中有一个java.util.Date对象。 我需要找到该对象指定的日复一日 我可以使用<jsp:scriptlet>插入Java并使用java.util.Calendar进行必要的计算,但是这对我来说既笨拙又笨拙。

是否有某种方法可以使用JSP或JSTL标记来达到此目的而不必切换到完整的Java,还是后者是实现此目的的唯一方法?

===============>>#1 票数:6 已采纳

我不喜欢将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

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
  version="2.0">
  <description>functions library</description>
  <display-name>functions</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>xfn</short-name>
  <uri>http://yourdomain/functions.tld</uri>
  <function>
    <description>
      Adds 1 day to a date.
    </description>
    <name>addDay</name>
    <function-class>Functions</function-class>
    <function-signature>java.util.Date addDay(java.util.Date)</function-signature>
    <example>
      ${xfn:addDay(date)}
    </example>
  </function>
</taglib>

===============>>#2 票数:2

虽然这不能回答您的最初问题,但是您可以通过执行以下操作来消除遍历java.util.Calendar的麻烦:

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

===============>>#3 票数:2

您必须使用scriptlet或编写自己的标签。 为了进行记录,使用日历看起来像这样:

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

真可怕。

===============>>#4 票数:1

不幸的是,我所知道的标准JSP / JSTL库中没有标签,因此您无法进行此日期计算。

最简单,最不优雅的解决方案是仅使用一些scriptlet代码进行计算。 您已经说过您认为这是一个笨拙的解决方案,我同意您的观点。 如果我是我,我可能会写一个定制的JSP taglib来获得它。

===============>>#5 票数:1

通常,我认为JSP不应具有数据逻辑。 他们应该从控制器获取他们需要显示的所有数据,并且他们的所有逻辑都应该与如何显示数据有关,而不与显示什么有关。 与添加自定义标签相比,这通常要简单得多且代码/ XML要少得多。

而且,如果没有任何重用发生,那么一个小的scriptlet真的比taglib XML差很多吗?

  ask by Sean McMains translate from so

未解决问题?本站智能推荐:

2回复

JSTL-在JSP中动态创建下拉菜单/下拉菜单,从列表中提取数据(java.util.List)

MVC模式:Servlet + JSP页面。 我有一个(基本)外观的类Category : 此类应表示类别-子类别概念:一个类别可以具有多个子类别,类别不需要具有父项(顶级类别,parentCategory字段为null),如果它是子类别,则其parentCategory字段代表其父项
2回复

jsp / jstl页面中的Java错误

我有以下代码: languageRB是存储在会话中的属性,类型为ResourceBundle。 我要执行以下操作:如果session中存在languageRB,则使用括号中的字符串值定义属性,否则将属性设置为默认值。 我收到以下错误:
3回复

如何在JSTL for Java JSP中执行“嵌套if”?

我想做类似以下的事情: 这甚至可能吗? 我试图运行时抛出一个异常。 谢谢。
1回复

使用jstl比较jsp中的日期对象

我有两个POJO的日期类型字段。 我正在使用Spring MVC并通过ModelAndView传递这两个POJO。 我可以使用compareTo()在控制器中比较那些日期。 我想在JSP页面中比较它们以隐藏或显示一些td。 在控制器中,此方法有效: 我也希望在JSP中进行比较
1回复

Java Web应用程序中的JSTL和JSP问题

我正在Java Web应用程序上工作,在其中通过使用数据库设置JDBC来填充2个bean。 我使用JSP来查看页面,并且以表格的形式得到了正确的结果。 我的一张桌子有关于驾驶员和乘客的数据。 该Bean正在填充全部数据。 现在,我需要利用JSTL标记仅查看驱动程序详细信息。 因此,我在
2回复

Java EE 7中的Servlet,JSP和JSTL需要哪些maven依赖项?

我想使用SDK Java EE 7,Glassfish 4和Maven。 这是正确的吗? 请注意范围。 1.对于servlet: 2.没有标准标签且没有JSTL的JSP: 3.对于带有标准标签的JSP“c:” 4.对于带有JSTL的JSP 您知道此信息
2回复

在JSTL中的计算jsp中访问JSTL变量

在jsp中我有这个部分并且可以正常工作 这里infoList来自struts动作类,它是类Info的ArrayList 现在,我需要添加另一个<td> ,它将打印计算出的百分比,如$ {info.delay} * 100 / $ {info.total},但将精确显示
3回复

我只想在.jsp文件中编写jsp,jstl

我正在学习JSTl + EL,但我不喜欢在JSP文件中使用<% %>标签。 我也没有找到关于该主题的好的文档-欢迎使用好的指针。 (这: http : //docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/并没有太大帮助)。 所以我的
1回复

使用JSTL时,JSP无法找到Servlet中设置的请求属性。

这个问题已经在这里有了答案 : JSP中未评估EL表达式 (2个答案) 当我尝试使用JSTL时,JSP无法识别我通过servlet提供给它的数据。 我可以在JSP中使用Java代码访问请求属性,但不能使用JSTL。
1回复

从Java代码注入JSP EL和/或JSTL标签

我有在JSP页面上使用的Java类。 getAttr()返回一个字符串,该字符串包含任意数量的HTML锚点元素,这些元素导致指向我的Web应用程序本地的URL: 和 只要使用默认上下文( / ),一切都很好。 可以使用诸如<a href = "<c:url val