J'ai un problème étrange avec la liaison différée. J'ai défini le module suivant:La liaison différée ne fonctionne pas après la compilation
<?xml version="1.0" encoding="UTF-8"?>
<!-- Defines the usercategory property and its provider function. -->
<module>
<define-property name="usercategory" values="c00,c01,c02" />
<collapse-property name="usercategory" values="*" />
<property-provider name="usercategory"><![CDATA[
// Look for the usercategory cookie
var cs = document.cookie.split(';');
for (var i = 0; i < cs.length; i++) {
var name = cs[i].substr(0, cs[i].indexOf("="));
var value = cs[i].substr(cs[i].indexOf("=") + 1);
name = name.replace(/^\s+|\s+$/g,"");
if (name == "usercategory") {
return unescape(value);
}
}
return "c00";
]]></property-provider>
</module>
qui définit la propriété usercategory
en regardant la valeur d'un cookie nommé usercategory
.
J'utilise cette propriété application.gwt.xml de reporter la liaison de certaines classes, par exemple:
<inherits name="com.example.UserCategory"/>
<replace-with class="com.example.client.ui.menu.MainMenuView01">
<when-type-is class="com.example.client.ui.menu.MainMenuView"/>
<when-property-is name="usercategory" value="c01"/>
</replace-with>
Cela fonctionne comme un charme quand je suis en mode développement (c.-à lors de l'exécution de mon application à l'intérieur Éclipse). Cependant, si je compile l'application et la déploie (dans Jetty, mais ce n'est pas le cas), la liaison différée ne semble pas fonctionner et les classes attendues ne sont pas chargées. J'ai vérifié et le cookie est configuré correctement avec la valeur correcte c01
, mais la classe com.example.client.ui.menu.MainMenuView01
n'est pas chargée.
Ai-je raté quelque chose? Est-ce que je fais quelque chose de mal?
Merci d'avance!
Avez-vous essayé de placer des instructions de débogage dans le fournisseur de propriétés pour voir ce qui se passe? Comme 'console.log' pour afficher certaines valeurs analysées? – Strelok
J'ai essayé ça. Le message sur 'console.log' sort comme prévu, mais l'application ne se comporte pas comme prévu: le' com.example.client.ui.menu.MainMenuView01' n'est pas chargé. Cependant, j'ai remarqué que si je clique sur le bouton de rechargement du navigateur, alors tout fonctionne bien ... Je ne sais pas pourquoi.De toute façon, je ne peux pas demander à mon utilisateur de cliquer sur recharger :( – MarcoS