この回答に見られるように、OmniFaces を使用して PrimeFaces スクリプトを延期しようとしています。
しかし、PrimeFaces は、次のように頭の中でインライン スクリプトをレンダリングします (スクリプトは美化され、私によってコメントされています)。
<script type="text/javascript">
if(window.PrimeFaces) {
// this line is always rendered in Development mode.
PrimeFaces.settings.projectStage='Development';
// these lines are added if Client Side Validation is enabled.
PrimeFaces.settings.locale='pt_BR';
PrimeFaces.settings.validateEmptyFields=true;
PrimeFaces.settings.considerEmptyStringNull=true;
}
</script>
アプリケーションを実行すると、いくつかの JS エラー (ファイルとエラー) が発生します。
validation.js.xhtml?ln=primefaces&v=5.3:1
Uncaught TypeError: Cannot read property 'en_US' of undefined
beanvalidation.js.xhtml?ln=primefaces&v=5.3:1
Uncaught TypeError: Cannot read property 'en_US' of undefined
produto.xhtml:2
Uncaught TypeError: Cannot set property 'locale' of undefined
次のように、いくつかの変数を に入れるとprimefaces.deferred.js
:
if (!primeFacesLoaded) {
window.PrimeFaces = {
// variables added - begin
settings: {
projectStage: 'Development',
locale: 'pt_BR',
validateEmptyFields: true,
considerEmptyStringNull: true
},
// variables added - end
ab: function () {
defer("ab", arguments);
},
cw: function () {
defer("cw", arguments);
},
focus: function () {
defer("focus", arguments);
}
};
}
最初の 2 つのエラーは引き続き発生しますが、3 番目のエラーはなくなります。
どうやら、PrimeFaces JS オブジェクトには次のプロパティがありません。
locales: {
// other values...
en_US: {
// other values...
}
},
util: {
// other values...
},
問題は、これらの PrimeFaces スクリプト プロパティを正しく延期する方法です。
PS: バージョン: PrimeFaces 5.3、OmniFaces 2.3、Payara Server (Glassfish) 4.1.1.161