2017-06-22 25 views
1

我是Spring/JSF的新手。當bean更改爲@Scope(「請求」)時,Ajax調用不起作用PrimeFaces

我有一個由@Component其中有一個@AutowiredUserClass類有註釋的控制器,

@Scope(value=org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE) 

我需要爲每個新的請求,所以我的控制器都被註解@Scope("request")其中工程創建一個新的UserClass實例完美地(爲每個請求創建新的實例)和這個註解。

但在<p:dataTable>選擇,commondLink,<f:setPropertyActionListener...

注打破了Ajax調用:如果我改變@Scope("request")@ViewScoped阿賈克斯的作品,但我UserClass成爲單身,所有的數據在線程之間共享。

我google了一下,知道我們需要使用JSF註釋或者Spring,但是在這裏我只使用Spring註解。

而我發現這個,PrimeFaces doesn't work when bean scope is request但無法理解。

回答

1

像Primefaces這樣的組件庫在很大程度上依賴於有狀態模型,這意味着在託管bean中至少使用視圖範圍。如果您使用請求範圍,您將爲每個請求重新創建託管bean,包括ajax請求,我想這不是您想要的(至少不是用JSF的方式)。

爲了模擬JSF視圖範圍,最好使用自定義Spring範圍。我喜歡來自PF團隊的this approach(有點舊帖子,但你仍然可以調整它的更新的春天版本)或this one,這是更詳細闡述。