У меня странная проблема с отложенным связыванием. Я определил следующий модуль:
<?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>
, который устанавливает свойство usercategory
путем просмотра значения файла cookie с именем usercategory
.
Я использую это свойство application.gwt.xml, чтобы отложить привязку некоторых классов, например:
<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>
Это работает как чудо, когда я нахожусь в режиме разработки (т.е. когда я запускаю свое приложение из Eclipse). Однако, если я скомпилирую приложение и разверну его (в Jetty, но у меня этого нет, вот в чем проблема), то отложенное связывание не работает и ожидаемые классы не загружаются. Я проверил, и cookie настроен правильно с правильным значением c01
, но класс com.example.client.ui.menu.MainMenuView01
не загружен.
Я что-то упустил? Я что-то не так делаю?
Заранее спасибо!