【发布时间】:2015-12-03 06:09:08
【问题描述】:
我正在使用 JSF2.2 和 PrimeFaces 5.2,我有一个通过
发布请求的 chackbox 列表<p:ajax listener="#{packageListBean.filterResults()}" update="@form" process="@this"/>
每次发布时都会调用 be 的 @PostConstruct 方法,但不会调用侦听器。
bean 用 :
注释import javax.faces.view.ViewScoped;
import javax.inject.Named;
这很奇怪,因为我希望 @PostConstruct 方法只在页面的第一个 GET 请求时被调用。
在 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
【问题讨论】:
-
那么,HTTP 会话没有维护?
-
如果我使用 f:ajax 而不是 p:ajax 则不会调用 @PostConstruct 方法并且还会调用侦听器,但我想知道为什么?这是 primefaces p:ajax 中的错误吗?
-
那么,您是手动包含 jQuery 吗?您是否按照stackoverflow.com/tags/jsf/info 中的说明检查浏览器控制台以获取线索?
-
@BalusC 我已经更新了问题,浏览器控制台没有错误,当从 p:ajax 或 f:ajax 调用时,我还在问题中包含了请求标头数据
-
不确定这是否会有所帮助,但我认为
p:ajax应该使用update="@(form)"而不是update="@form"(注意括号)。
标签: jsf primefaces view-scope postconstruct