2017-10-12 9 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日以内にサービス日付を知っていますか?

<display:column>に60日以内の日付を示す方法はありませんか? あなたはそれについて考えていますか?ありがとうございました。

答えて

0

(これは良い解決策ではないかもしれませんが、私のケースに合っているので、問題を解決するためのアイデアがありますので、回答としてここに投稿したいと思います)。

まず、サービスの日付を変数で取得します。

次に、サービス日に60日を追加し、それを変数にします。

次に、サービス日が60日以内であるかどうかを判断するために計算を実行します。

関連する問題