我正在使用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
答案 0 :(得分:0)
您的托管bean是否真的注释为ViewScope?您只显示导入但不显示注释,在这种情况下,如果未找到范围注释,则托管bean为请求范围。