4.1.1 ワークスペースにアクセスできるようになったとき (apex.oracle.com が 4.2 に更新されたため)、すぐに問題を再現しようとしました。しかし、私はできません!apex.oracle.com で問題があったことは断言しますが、間違いを犯したかどうかはもうわかりません。
実際、4.1.0 と 4.1.1 はまったく同じように応答します。4.2 は違いますが、少しだけです。なぜ今まで多くの時間を無駄にしてきたのかわかりませんが、明らかな論理的欠陥を本当に見逃していたに違いありません。
ただし、4.0 と 4.1 の間で何が変わったのかわからないので、4.0 で日付ピッカーを初期化するために何をしたかわかりません。アイテムを呼び出して機能させるだけでよい場合apex.widget.datepicker
、4.1 では追加の手順が必要になるため、少し変更されます。
を呼び出す前apex.widget.datepicker
に、ロケールがロードされていることを確認する必要があります。アクション>フィルターメニューを開いたときにapexによって行われたajax呼び出しを調べて、これをスパイしました。このコードは、ディレクトリ内の datepicker ロケール ファイルに設定されたソースを含む script タグを追加しますapex_images
。このファイルは、datepicker のいくつかの変数を初期化します。
たとえば、言語 English = のアプリケーションは、次の'en'
ように初期化されます。apex.jQuery.datepicker.regional['en']
ウィジェット コードがこれらのロケール変数にアクセスしようとするため、これが発生しないとundefined
オブジェクト エラーが発生するため、これは重要です。スクリプト コードが追加されていない場合は追加されずapex.widget.datepicker
、エラーがスローされます。
datepicker コードが機能することを確認するには、ロケール JavaScript ファイルを含める必要があります。これを行うには、ページ ヘッダー、ページ自体、またはテンプレートに追加するか、動的に行うことができます。最適な場所を決定するのはあなた次第です。
ロケール ファイルを動的に追加する例を次に示します。
$(document).append('<script type="text/javascript" src="/i/libraries/jquery-ui/1.8.14/ui/i18n/oracle/jquery.ui.datepicker-en.js"></script>');
これにより、指定されたディレクトリにファイルが取得され (actions>filter と同じ)、次のようになります。
//****** AMERICAN ******
apex.jQuery(function($){
apex.jQuery.datepicker.regional['en'] = {
closeText: "Close",
prevText: "Prev",
nextText: "Next",
currentText: "Today",
monthNames: ["January","February","March","April","May","June","July","August","September","October","November","December" ],
monthNamesShort: ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" ],
dayNames: ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" ],
dayNamesShort: ["Sun","Mon","Tue","Wed","Thu","Fri","Sat" ],
dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa" ],
weekHeader: "Wk",
dateFormat: "dd-M-y",firstDay: 0,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ""};
apex.jQuery.datepicker.setDefaults(apex.jQuery.datepicker.regional['en']);
});
さて、そのパスにはいくつかのハードコーディングの問題があることに注意してください。「/i/」、jquery バージョン、およびロケールがあります。jquery バージョンについてできることはあまりありません。
ロケール/i/
で置き換えることができます アプリケーション変数でキャッチできますapex_img_dir
BROWSER_LANGUAGE
$(document).append('<script type="text/javascript" src="'+apex_img_dir+'libraries/jquery-ui/1.8.14/ui/i18n/oracle/jquery.ui.datepicker-&BROWSER_LANGUAGE..js"></script>');
トリックを行う必要があります(確認するためにajax呼び出しを調べてください!)
スクリプトが含まれたら、apex.widget.datepicker を安全に呼び出すことができます。
今、私も4.2で実験してきましたが、ほとんど同じです。変更された唯一のことは、ウィジェット コードを含める必要があることです。
$(document).append('<script type="text/javascript" src="'+apex_img_dir+'libraries/jquery-ui/1.8.22/ui/i18n/oracle/jquery.ui.datepicker-en.js"></script>' +
'<script type="text/javascript" src="'+apex_img_dir+'libraries/apex/minified/widget.datepicker.min.js?v=4.2.0.00.19"></script>');
これで大部分をカバーできるはずです。