2014-01-29 74 views
2

我如下所示(代碼的不完整版本)從MySQL數據庫表中迭代列表,其中包含MySQL中DateTime類型的列。在JSP中使用Struts2格式化Joda-Time的日期

<s:iterator value="discounts" status="loopStatus"> 

    <joda:format var="formattedStartDate" 
       value="${discountStartDate}" 
       pattern="dd-MMM-yyyy HH:mm:ss" style="F-" 
       dateTimeZone="Asia/Kolkata"/> 

    <td><c:out value="${formattedStartDate}"/></td> 
</s:iterator> 

我們可以使用<joda:format>和struts標籤格式化日期時間嗎?

我能代替,

<c:out value="${formattedStartDate}"/> 

喜歡的東西,

<s:property value="%{formattedStartDate}" /> 

它不工作。在迭代完整列表後,該列保持爲空,因爲<s:property>標記丟失的相應模型中的實際屬性爲discountStartDate


其他信息:

日期

格式是通過使用custom converter內部完成的,但我想顯示在這個dd-MMM-yyyy HH:mm:ss格式的日期(這是由轉換器實現),這是不被jQuery的日期接受我正在使用的時間選擇器。

因此,HTML格式中指定格式中列出的日期不能編輯,除非它們在編輯行時被賦予日期時間選擇器(MM/dd/yyyy HH:mm:ss)接受的格式。

請不要只是說,使用另一個日期,時間選擇器,可以接受的格式dd-MMM-yyyy HH:mm:ss。這種需求也可能出現在不同的地方。


其實我需要的formattedStartDate<s:param><s:url>的價值,但我還沒有提到,爲了簡單起見。無論如何,formattedStartDate的值應賦予/分配給Struts標記(如果可能)。

回答

2

如果您沒有使用scope屬性<joda:format>標籤,默認範圍將爲頁面範圍。爲了在Struts2標籤中使用#attr,它將搜索頁面,請求,會話和應用程序範圍。

<s:iterator value="discounts" status="loopStatus"> 
    <joda:format var="formattedStartDate" 
       value="${discountStartDate}" 
       pattern="dd-MMM-yyyy HH:mm:ss" style="F-" 
       dateTimeZone="Asia/Kolkata"/> 

    <td><s:property value="#attr.formattedStartDate" /></td> 
</s:iterator>