わかりました、それで、私は数日間インターネットを精査してきましたが、まだ困惑しています. データベース呼び出しを行い、Datatables テーブルにデータを表示する JSP があります。日付がページに渡されると、yyyy-MM-dd hh:mm:ss の形式になります。私たちのユーザー (米国) は MM/dd/yyyy 形式に慣れているので、fmt:formatDate JSTL タグを使用してそのように表示します。残念ながら、何らかの理由で JS はそのタグを好まないので、その理由はわかりません。
これが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 サーバーの両方で発生します。