2017-06-22 23 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,这是更详细阐述。