2010-07-02 48 views
1

我有一个JSF Web应用程序,它在用户操作后打开与IBM MQ Q Manager的连接,即执行某些操作。 当用户离开页面(仅使用FF)或关闭浏览器时,我希望我的应用能够检测到这一点并优雅地关闭连接。用JSF检测页面卸载;影响<body>来自JSF的标记

我到目前为止在网上找到的所有内容都是对window.unload的引用以及对body标签的使用。我使用的是RichFaces和Facelets,所以没有body标签。我如何将上述事件的单词传递给我的bean,以便在用户离开时让它工作?

编辑 受访BalusC和Bozho是正确的 - 当然还有一个body标签但对我来说,我不指定它明确,就是BEING生成它;我的index.xhtml文件包含此:

<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:a4j="http://richfaces.org/a4j" 
xmlns:rich="http://richfaces.org/rich" 
xmlns:c="http://java.sun.com/jstl/core"> 

<f:view>... 

后,我在使用A4J和丰富的标签等。因此,问题变得直接跳转(1):是将属性添加到body标签,以最有效的方法明确添加一个你想要的属性的身体标签,或者有​​另一种方式?这个问题存在,因为我没有在我的代码中明确指定一个body标签,但是已经生成了一个。 (2):在这种情况下究竟产生了身体标记?

+1

打开一个页面,并选择*查看源文件*:在RichFaces的,你可以使用标签

<rich:jQuery> 

所以要atribbute添加到身体,你会做到这一点。 ''标签在那里。 – BalusC 2010-07-02 21:25:06

+0

是的。对不起 - 查看问题更新。 – volvox 2010-07-05 10:14:30

+0

更新后的问题仍然存在 - 使用我需要的属性添加主体标签的最有效方法是什么? – volvox 2010-07-05 12:05:46

回答

3
  1. 你有一个<body>,你必须有一个
  2. 使用您找到解决方案,并执行你的<a4j:jsFunction>window.unload,这反过来又调用服务器来完成任何已敲定
  3. 你最好不要依赖这个 - 配置一个合理的连接超时,以便在足够的时间过后它可以优雅地死去。
0

你可以非常容易地添加atribbutes到任何使用jQuery的标签。在网页浏览器,右击

<rich:jQuery selector='("body")' timing="onload" query="attr('atribbuteName', 'atribbuteValue')" /> 
+0

这将检测页面卸载? – mzzzzb 2012-10-28 12:23:40