2013-08-26 64 views
-1

好的,所以我一直在網上衝浪了幾天,而且我仍然難倒了。我有一個JSP進行數據庫調用,並將數據顯示在Datatables表中。現在,當日期傳遞到頁面時,它的格式爲yyyy-MM-dd hh:mm:ss。我們的用戶(美國)習慣於看到MM/dd/yyyy格式,所以我使用fmt:formatDate JSTL標籤來顯示它。不幸的是,無論出於何種原因,JS不喜歡那個標籤,我不知道爲什麼。fmt:formatDate JSTL標籤和使用Datatables插件的自定義日期排序

這裏是JavaScript:

jQuery.extend(jQuery.fn.dataTableExt.oSort, { 
"date-us-pre": function (a) { 
    var usDatea = a.split('/'); 
    return (usDatea[2] + usDatea[1] + usDatea[0]) * 1; 
}, 

"date-us-asc": function (a, b) { 
    return ((a < b) ? -1 : ((a > b) ? 1 : 0)); 
}, 

"date-us-desc": function (a, b) { 
    return ((a < b) ? 1 : ((a > b) ? -1 : 0)); 
} 
}); 

我有一個文件名爲jquery.datesort.js其中包括我在頁面上。下面是我使用的初始化:

$(document).ready(function() { 
       $('#institution').dataTable({ 
           "sScrollY": "200px", 
           "iDisplayLength": 25, 
           "sPaginationType": "full_numbers", 
           "bScrollCollapse": true, 
           "aoColumns": [ 
           null, 
           null, 
           null, 
           null, 
           null, 
           { "sType": "date-us" }, 
           null, 
           null 
           ] 
       }) 
          }); 

我知道這工作,因爲我測試了針對虛擬數據,在這裏我簡單的硬編碼在MM/DD/YYYY格式的日期到表。當我這樣做時,排序按預期工作(按年份,然後按月排序,然後按日排序)。

現在,這裏是表體代碼:

<tbody> 
      <c:forEach items="${STAT.rows}" var="item"> 
       <c:set value="${item.LOC_ID}" var="locationID"/> 
        <tr>       
         <td><c:out value="${item.NAME}" /></td>    
         <td><c:out value="${item.SUBSCRIPT}" /></td>    
         <td><c:out value="${item.ADDRESS}" /></td>   
         <td><c:out value="${item.RESULT}" /></td>   
         <td><c:out value="${item.STATUS}" /></td>   
         <td><fmt:formatDate pattern="MM/dd/yyyy" value="${item.DATE}" /></td> 
         <td><c:out value="${item.TYPE}" /></td>    
         <td><c:out value="${item.RA}" /></td> 
        </tr> 
      </c:forEach> 
     </tbody> 

也能正常工作,輸出數據爲MM/DD/YYYY的格式,但由於某些原因,我的那種根本不喜歡它。當我點擊排序按鈕時,它們會改變圖像(向上箭頭向下箭頭,反之亦然),以反映正在執行排序,但數據不在屏幕上排序。此外,如果我刪除fmt:formatDate標記並將日期排序的js註釋掉,則日期將顯示爲yyyy-MM-dd hh:mm:ss,並按照該方式排序(如預期的那樣)。

我有點困惑,因爲我相信fmt:formatDate會發生在服務器端,因爲它是JSTL。這意味着客戶端只能看到MM/dd/yyyy的後期格式化數據,當js在客戶端執行它時,它不應該與我對日期進行硬編碼時不同。但這並沒有發生。

任何想法?是否有某種明顯的問題,我錯過了?

編輯(1):我正在使用JDeveloper 11G R2。在集成WebLogic服務器和獨立WebLogic服務器中都會發生此行爲。

回答

0

還有字體標籤也被使用。刪除它們之後,一切都按原樣運行。