0
在我們的應用程序中,ICEfaces在導航到另一個JSF頁面之前總是發送一個dispose-window請求。盡我所知,當org.icefaces.lazyWindowScope設置爲true並且當前請求中沒有涉及窗口範圍的bean時不應該發生這種情況。但它發生在每個鏈接上,並使我們的用戶界面響應性降低。但我們的應用程序中沒有任何窗口範圍的bean。爲什麼在使用視圖範圍的bean時,ICEfaces在頁面卸載時發送處理窗口請求?
是在使用視圖範圍的bean時發送dispose請求的icefaces中的錯誤?是否可以禁用? ViewScope在JSF定義不ICEfaces的,它應該沒有這種處置要求我猜...
@ManagedBean(name="viewScopeBean")
@ViewScoped
public class ViewScopeBean {
public void doSomething(){
//
}
}
而且這裏的例子JSF:
<ice:form>
<ice:commandButton value="doSomething" action="#{viewScopeBean.doSomething}"/>
<h:link outcome="index" value="Link to same page"/>
</ice:form>
要重現做使用上面的代碼如下:
- 打開Firebug的Net選項卡並激活持續的選項
- 點擊DoSomething的-按鈕
- 點擊 「鏈接到同一頁」
- =>處理窗口將導航之前發送
處置請求參數:
- ice.submit.type = ice.dispose.window
- ice.window = 4guthcbue
- javax.faces.ViewState = -8138151632882151449%3A-6709064564386098402
環境:
- ICEfaces的-EE 2.0.0.GA
- ICEpush-EE 2.0.0.GA
- 鑽嘴魚科2.1.1
- 的JRockit 1.6.0_22
- 的WebLogic Server 10.3。 4.0
ICEfaces的配置:
- org.icefaces.render.auto:真正的[默認]
- org.icefaces.autoid:真正的[默認]
- org.icefaces.aria.enabled:真正的[默認]
- org.icefaces。 blockUIOnSubmit:假[默認]
- org.icefaces.compressDOM:假[默認]
- org.icefaces.compressResources:真正的[默認]
- org.icefaces.connectionLostRedirectURI:/pages/main.jsf
- org.icefaces.deltaSubmit:false [defau lt]
- org.icefaces。lazyPush:真正的[默認]
- org.icefaces.sessionExpiredRedirectURI:/pages/main.jsf
- org.icefaces.standardFormSerialization:假[默認]
- org.icefaces.strictSessionTimeout:假[默認]
- org.icefaces.windowScopeExpiration = 1000 [默認]
- org.icefaces.mandatoryResourceConfiguration:空[默認]
- org.icefaces.uniqueResourceURLs:真[默認]
- org.icefaces.lazyWindowScope:真[默認] 個
- org.icefaces.disableDefaultErrorPopups:假[默認]
在[ICEfaces的的文檔(http://wiki.icefaces.org/display/ICE/Configuration)我發現以下內容:「請注意,如果視圖範圍映射包含任何視圖作用域豆,lazyWindowScope是不默認啓用「。但爲什麼?這意味着只要viewscoped豆參與這個請求被髮送的頁面卸載... – fischermatte
所以現在看來,這是在ICEfaces的一個bug [http://jira.icefaces.org/browse/ICE-7513](http:// jira.icefaces.org/browse/ICE-7513) – fischermatte
如果你確信沒有任何windowscoped豆,你可以一次加載頁面刪除頁面卸載回調:'window.onUnload = NULL;'。這適用於我們的應用程序。 – fischermatte