@ViewScoped bean中的@PostConstruct在每个<p:ajax>请求上调用

时间:2015-09-07 16:27:50

标签: jsf primefaces view-scope postconstruct

我正在使用JSF2.2和PrimeFaces 5.2,我有一个通过

发布请求的chackbox列表
<p:ajax  listener="#{packageListBean.filterResults()}" update="@form" process="@this"/>

每次发布​​帖子时都会调用was的@PostConstruct方法,但不会调用监听器。

bean被分配:

import javax.faces.view.ViewScoped;
import javax.inject.Named;

这是非常奇怪的,因为我希望仅在页面的第一个GET请求时调用@PostConstruct方法。

在BalusC评论后添加:

我包括这样的jquery:

<h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />

如果我通过f:ajax发出请求,那么代码工作正常,@ PostConstruct只被调用一次,并且调用监听器。

这是用p:ajax

发出的请求
POST /index.jsf HTTP/1.1
Host: cloudflow-backend-local.arctur.net:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
Accept: application/xml, text/xml, */*; q=0.01
Accept-Language: sl,en-GB;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Faces-Request: partial/ajax
X-Requested-With: XMLHttpRequest
Referer: http://cloudflow-backend-local.arctur.net:8080/index.jsf
Content-Length: 280
Cookie: lng=sl; **************.*****
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

这是f:ajax

提出的请求
POST /index.jsf HTTP/1.1
Host: cloudflow-backend-local.arctur.net:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: sl,en-GB;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Faces-Request: partial/ajax
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Referer: http://cloudflow-backend-local.arctur.net:8080/index.jsf
Content-Length: 498
Cookie: lng=sl; ****************.*******
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

1 个答案:

答案 0 :(得分:0)

您的托管bean是否真的注释为ViewScope?您只显示导入但不显示注释,在这种情况下,如果未找到范围注释,则托管bean为请求范围。