-1

わかりました、それで、私は数日間インターネットを精査してきましたが、まだ困惑しています. データベース呼び出しを行い、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 サーバーの両方で発生します。

4

1 に答える 1

0

使用されていたフォントタグもありました。それらを削除した後、すべてが正常に機能します。

于 2013-08-26T19:41:16.793 に答える