如何在jsp中指示日期是否在60天内?

时间:2017-10-12 09:25:49

标签: java jsp jstl

我有一个表格来显示服务名称和服务日期

我支持这段代码并且工作正常:

<display:table name="${serviceList}" class="its" uid="row"
        sort="list" pagesize="10" requestURI="serviceMaint_view" export="false" defaultsort="2" defaultorder="descending" id="serviceTable">
    <display:column style="width: 30%" title="Service Name" property="serviceName"  />

    <display:column style="width: 10%" title="Service Date" property="serviceDate" format="{0,date,dd-MM-yyyy}" />
</display:table> 

我在另一栏中指出服务日期在60天内,例如,如果服务日期在60天内,该列将显示“正在使用的服务”,而如果服务日期超过60天,那么列中没有指示符(将列留空)。

我已阅读此帖How to add 30 days in a timestamp in jstl。我在<display:column>中应用了解决方案,但它不起作用(将显示下面的代码)。我想也许有些taglib缺失所以我在代码中添加它们但它仍然不起作用。

<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib uri="http://displaytag.sf.net" prefix="display"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<%@ page language="java" import="java.util.*,common.utility.*"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@page import="java.text.DateFormat"%>
<%@page import="java.util.*"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Calendar" %> 
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/fmt" prefix = "fmt" %>

<display:table name="${serviceList}" class="its" uid="row"
        sort="list" pagesize="10" requestURI="serviceMaint_view" export="false" defaultsort="2" defaultorder="descending" id="serviceTable">
    <display:column style="width: 30%" title="Service Name" property="serviceName"  />

    <display:column style="width: 10%" title="Service Date" property="serviceDate" format="{0,date,dd-MM-yyyy}" />

<display:column>
   <%
   Date date= serviceDate; //serviceDate cannot be resolved to a variable
   Calendar cal = Calendar.getInstance();
   cal.setTime (date);
   cal.add (Calendar.DATE, 60);
   date = cal.getTime (); //Type mismatch: cannot convert from java.util.Date to java.sql.Date
   %>
   <c:if test="${serviceDate ge date}">
    <c:out value = "Service in use" />
   </c:if>   

</display:column>       

<!--also try to use <s:if> but still get error -->

 <display:column>
 <%
 Date date= serviceDate; //serviceDate cannot be resolved to a variable
 Calendar cal = Calendar.getInstance();
 cal.setTime (date);
 cal.add (Calendar.DATE, 60);
 date = cal.getTime (); //Type mismatch: cannot convert from java.util.Date 
 to java.sql.Date
 %>
  <s:if tests='%{#serviceDate ge date}'>
  Service in use
  </s:if> 


</display:column>

</display:table> 

我看到一个帖子提到放入控制器来完成它。 (对不起,我忘了哪个帖子)如果在控制器中,是否意味着指标需要存储在数据库中?如果存储在数据库中,我认为记录将变为静态,除非我在数据库中修改它,否则无法更改,那么程序如何“知道”服务日期是否在60天内?

我不知道如何在<display:column>中指明日期是否在60天内? 你知道吗?谢谢。

1 个答案:

答案 0 :(得分:0)

(请注意我有一个想法,这可能不是一个好的解决方案,但它适合我的情况,所以我按照这个想法来解决问题,我想在这里作为答案发布。)

首先,按变量获取服务日期。

接下来,将60天添加到服务日期并将其作为变量。

然后,进行计算以找出确定服务日期是否在60天内的日期。