J'ai une table pour afficher le nom du service et la date de serviceComment indiquer que la date est dans les 60 jours en jsp?
Je Wirte ce code et il fonctionne très bien:
<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>
Je fais une autre colonne pour indiquer la date de service est dans les 60 jours, pour Par exemple, si la date de service est dans les 60 jours, la colonne affichera "Service en cours" alors que si la date de service est supérieure à 60 jours, il n'y aura pas d'indicateur dans la colonne (laissez la colonne vide). J'ai lu cet article How to add 30 days in a timestamp in jstl. J'applique la solution dans <display:column>
, mais cela ne fonctionne pas (montrera le code ci-dessous). Je pense que certains taglib manquent donc je les ajoute dans le code mais ça ne marche toujours pas.
<%@ 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>
Je vois un post mentions à mettre dans le contrôleur pour le faire. (désolé je oublie quel poste) Si dans le contrôleur, cela signifie que l'indicateur doit stocker dans la base de données? Si stocker dans la base de données, je pense que l'enregistrement deviendra statique et ne peut pas être changé à moins que je le modifie dans la base de données, alors comment le programme «connaît» la date de service est ou pas dans les 60 jours?
Je ne sais pas comment indiquer que la date est dans les 60 jours dans <display:column>
? Avez-vous une idée à ce sujet? Je vous remercie.