我有一个表,显示服务名称和服务日期如何在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>
? 你有想法吗?谢谢。