Ich versuche, OmniFaces zu verwenden, um PrimeFaces-Skripts zu verzögern, wie in diesem answer zu sehen ist.So verschieben Sie PrimeFaces.settings und clientseitige Validierungsskripte mit o: defendedScript
Aber PrimeFaces macht einen Inline-Skript in dem Kopf, wie diese (Skript von mir verschönert und kommentiert):
<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>
Wenn ich die Anwendung ausführen, bekomme ich einige JS-Fehler (Datei und Fehler):
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
Wenn ich habe einige Variablen in primefaces.deferred.js
, wie folgt aus:
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);
}
};
}
Die beiden f Es treten immer noch erste Fehler auf, aber der dritte Fehler verschwindet.
Offenbar fehlt es dem PrimeFaces JS Objekt die folgenden Eigenschaften:
locales: {
// other values...
en_US: {
// other values...
}
},
util: {
// other values...
},
Also, die Frage ist: Wie kann man diese PrimeFaces Skripteigenschaften korrekt verschieben?
P. S: Versionen: PrimeFaces 5.3, 2.3 OmniFaces, Payara Server (Glassfish) 4.1.1.161
Mit diesem Skript, ich habe immer noch Probleme mit den Lokalisierungs und util Variablen. Vorschlag: Um das Kopieren vieler Variablen zu vermeiden, was passiert, wenn wir das gesamte window.PrimeFaces-Objekt auf eine andere Variable klonen, ab, cw, focus-Funktionen verzögern und das Objekt später wiederherstellen? – julianomqs
Ich sehe, PrimeFaces hat diese Validierung hartcodiert eingereicht. Siehe aktualisierte Antwort. – BalusC
2 Fragen: 1) Ich habe eine 'scripts.js', die' PrimeFaces.locales ['pt_BR'] 'Werte (zum Kalender) setzt. Soll ich dieses Skript zwischen 'DefredredPrimeFaces.begin()' und 'DeferredPrimeFaces.apply()' setzen? 2) Ich muss Skripte angeben, die auf jeder Seite verschoben werden sollen, oder kann ich sie in eine Vorlage einfügen? – julianomqs