我有一个奇怪的延迟绑定问题。我已经定义了以下模块:延迟绑定编译后不工作
<?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>
这就像一个魅力当我在开发模式(即从内部运行我的应用程序时,蚀)。但是,如果我编译应用程序并部署它(在Jetty中,但我不这是问题),则延迟绑定似乎不起作用,并且不会加载期望的类。我检查过了,cookie的设置正确,值为c01
,但com.example.client.ui.menu.MainMenuView01
未加载。
我错过了什么吗?难道我做错了什么?
预先感谢您!
您是否尝试将调试语句放入属性提供程序中以查看发生了什么?像'console.log'输出一些正在分析的值? – Strelok
我试过了。 'console.log'上的消息如我所料,但应用程序不像我预期的那样:'com.example.client.ui.menu.MainMenuView01'未加载。不过,我注意到,如果我点击浏览器的重新加载按钮,那么一切正常......只是不知道为什么。无论如何,我不能要求我的用户点击重新加载:( – MarcoS