我有一個奇怪的延遲綁定問題。我已經定義了以下模塊:延遲綁定編譯後不工作
<?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