2013-08-26 3 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 
           ] 
       }) 
          }); 

Я знаю, что это работает, потому что я тестировал против фиктивных данных, где я просто жестко закодированные даты в формате ММ/дд/гггг в таблицу , Сорт работал, как ожидалось, когда я это делал (сортировка по годам, затем месяцам, а затем и день).

Теперь вот код для тела таблицы:

<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> 

Это прекрасно работает для вывода данных в формате ММ/дд/гггг, но по какой-то причине, мой род просто не нравится , Когда я нажимаю кнопки сортировки, они меняют изображение (стрелка вверх стрелкой вниз и наоборот), чтобы отразить, что выполняется сортировка, но данные не сортируются на экране. Кроме того, если я удалю тэг fmt: formatDate и закомментирую js для сортировки даты, дата будет отображаться как yyyy-MM-dd hh: mm: ss и будет сортироваться таким образом без проблем (как и ожидалось).

Я немного озадачен, потому что я полагал, что fmt: formatDate будет происходить на стороне сервера, поскольку это JSTL. Это означало бы, что клиент будет видеть только данные в формате MM/dd/yyyy после форматирования, а когда js делает это на стороне клиента, это не должно быть иначе, чем когда я жестко закодировал даты. но это не происходит.

Любые идеи? Есть ли какая-то вопиющая проблема, которую мне не хватает?

EDIT (1): Я использую JDeveloper 11G R2. Такое поведение происходит как на интегрированном сервере WebLogic, так и на автономном сервере WebLogic.

ответ

0

Были и теги шрифтов, которые также использовались. После их удаления все работает так, как должно.