Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 为什么在使用视图作用域bean时,ICEfaces在页面卸载时发送dispose窗口请求?_Jsf 2_Icefaces - Fatal编程技术网

Jsf 2 为什么在使用视图作用域bean时,ICEfaces在页面卸载时发送dispose窗口请求?

Jsf 2 为什么在使用视图作用域bean时,ICEfaces在页面卸载时发送dispose窗口请求?,jsf-2,icefaces,Jsf 2,Icefaces,在我们的应用程序中,ICEfaces总是在导航到另一个JSF页面之前发送dispose窗口请求。据我所知,当org.icefaces.lazyWindowsScope设置为true并且当前请求中不涉及窗口范围的bean时,不应该发生这种情况。但它发生在每个链接上,并使我们的UI响应性较差。但是我们的应用程序中没有任何窗口范围的bean 使用视图范围bean时发送dispose请求的icefaces中是否存在缺陷?可以禁用吗?ViewScope是在JSF中定义的,而不是在ICEfaces中定义的,

在我们的应用程序中,ICEfaces总是在导航到另一个JSF页面之前发送dispose窗口请求。据我所知,当org.icefaces.lazyWindowsScope设置为true并且当前请求中不涉及窗口范围的bean时,不应该发生这种情况。但它发生在每个链接上,并使我们的UI响应性较差。但是我们的应用程序中没有任何窗口范围的bean

使用视图范围bean时发送dispose请求的icefaces中是否存在缺陷?可以禁用吗?ViewScope是在JSF中定义的,而不是在ICEfaces中定义的,我想它应该可以在没有这个dispose请求的情况下工作

@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的“网络”选项卡并激活“持久化”选项
  • 单击doSomething按钮
  • 单击“链接到同一页面”
  • =>导航前将发送dispose窗口
  • Dispose请求参数:

    • ice.submit.type=ice.dispose.window
    • ice.window=4guthcbue
    • javax.faces.ViewState=-8138151632882151449%3A-6709064564386098402
    环境:

    • 冰面EE 2.0.0.GA
    • ICEpush EE 2.0.0.GA
    • 莫哈拉2.1.1
    • JRockit 1.6.0_22
    • WebLogic服务器10.3.4.0
    冰面配置:

    • org.icefaces.render.auto:true[默认值]
    • org.icefaces.autoid:true[默认值]
    • org.icefaces.aria.enabled:true[默认值]
    • org.icefaces.blockUIOnSubmit:false[默认值]
    • org.icefaces.compressDOM:false[默认值]
    • org.icefaces.compressResources:true[默认值]
    • org.icefaces.connectionLostRedirectURI:/pages/main.jsf
    • org.icefaces.deltaSubmit:false[默认值]
    • org.icefaces.lazyPush:true[默认值]
    • org.icefaces.sessionExpiredDirectUri:/pages/main.jsf
    • org.icefaces.standardFormSerialization:false[默认值]
    • org.icefaces.strictSessionTimeout:false[默认值]
    • org.icefaces.windowScopeExpiration=1000[默认值]
    • org.icefaces.mandatoryResourceConfiguration:null[默认值]
    • org.icefaces.uniqueResourceURLs:true[默认值]
    • org.icefaces.lazyWindowsScope:true[默认值]
    • org.icefaces.disableDefaultErrorPopups:false[默认值]

    请参阅上面的注释和解决方法。这是icefaces中的一个bug。

    在中,我发现了以下内容:“请注意,如果视图范围映射包含任何视图范围bean,默认情况下LazyWindowsScope不会启用。”但为什么?这意味着,每当涉及ViewScope bean时,该请求都会在页面卸载时发送……因此,这似乎是ICEfaces中的一个错误。如果您确定没有任何WindowsScoped bean,则可以在加载页面后删除页面卸载回调:
    window.onUnload=null。这在我们的应用程序中有效。i ment
    window.onbeforeunload