2012-12-03 68 views
0

我有Struts2代碼來顯示基於這樣的日期比較結果的按鈕(請注意,這是我實際擁有的簡化示例):如何將此Struts2轉換爲displaytag(日期比較)

<s:iterator value="myList"> 
    <s:if test="%{getDate().compareTo(getNow()) > 0}"> 
     // Show the item 
    </s:if> 
</s:iterator> 

我已經將結果集的顯示轉換爲使用displaytag。我如何使用顯示標籤來完成上述操作。這是我試過的。

<display:table name="myList" pagesize="50" id="row"> 
    <display:column title="Item"> 
     <s:if test="%{#attr.row.endDt.compareTo(#attr.row.now()) > 0}"><%--does NOT work--%> 
    </display:column> 
</display:table> 

<s:if>語句的正確語法是什麼?
或者,這不能使用displaytag + Struts2?

+0

既然你使用'GETDATE()的compareTo(getNow())> 0'第一,工作表達式,你有沒有嘗試'#attr.row.getDate()。compareTo(#attr.row.getNow())> 0'?這對我來說似乎更合乎邏輯。 –

+0

@JBNizet我甚至沒有想到!但不幸的是,這並不奏效。 – nmc

回答

0

有可能多個解決方案,但是,這最終爲我工作。

<display:table name="myList" pagesize="50" id="row"> 
    <display:column title="Item"> 
     <s:set name="endDt" value="#attr.row.endDt"/> 
     <s:set name="now" value="now" /> 
     <s:if test="%{#endDt.compareTo(#now) > 0}"> 
      <span>w00 h00!</span> 
     </s:if> 
    </display:column> 
</display:table> 
0

使用#attr.row作爲索引引用列表中的元素應該工作:

<display:table name="myList" pagesize="50" id="row"> 
    <display:column title="Item"> 
     <s:if test="myList[%{#attr.row_rowNum - 1}].endDt.compareTo(myList[%{#attr.row_rowNum - 1}].now()) > 0}"> 
      <span>Let's rock</span> 
     </s:if> 
    </display:column> 
</display:table> 

注:是getNow()從迭代物體發出的功能?

這對我來說似乎很奇怪,它不應該是一個常見的功能,從baseAction起例子嗎?

+0

感謝您的回答,但對我而言並不適合。 'getnow'實際上並不是bean的一個屬性,但是正如你所說,它來自BaseAction的Action類。 – nmc

0

另一種方法是使用displaytag裝飾器。

public String getLink() 
{ 
    YourObject yourObject = (YourObject) getCurrentRowObject(); 
    //Do your checks.... 
    return "<a href="#">your link</a>"; 

} 
相關問題