我有一个表格来显示服务名称和服务日期
我支持这段代码并且工作正常:
<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天内?
你知道吗?谢谢。
答案 0 :(得分:0)
(请注意我有一个想法,这可能不是一个好的解决方案,但它适合我的情况,所以我按照这个想法来解决问题,我想在这里作为答案发布。)
首先,按变量获取服务日期。
接下来,将60天添加到服务日期并将其作为变量。
然后,进行计算以找出确定服务日期是否在60天内的日期。