2017-10-12 109 views
0

我有一个表,显示服务名称和服务日期如何在jsp中指定日期在60天内?

我WIRTE此代码,它工作正常:

<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天内还是不在60天内?

我不知道如何来显示的日期是在60天内在<display:column>? 你有想法吗?谢谢。

回答

0

(请注意,我有一个想法,这可能不是一个很好的解决方案,但让我跟随的想法来解决这个问题,我想在这里张贴作为回答很适合我的情况)。

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

下为60天添加到服务的日期,并使其作为一个变量。

然后,做计算,找出当天确定服务日期是否在60天内与否。