Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf/Spring请求作用域bean_Spring_Jsf_Scope_Managed Bean - Fatal编程技术网

Jsf/Spring请求作用域bean

Jsf/Spring请求作用域bean,spring,jsf,scope,managed-bean,Spring,Jsf,Scope,Managed Bean,由于我在javaee编程方面没有太多经验,也没有人可以问,所以我想问你。 我的代码中有一件事我不喜欢,并且认为它是以错误的方式实现的。 我的托管bean是请求作用域。在jsf中,我使用rich:pickList,它从列表中获取数据 @Scope("request") public class MyBean{ private List<String> sourceList; .... public List<String> gets

由于我在javaee编程方面没有太多经验,也没有人可以问,所以我想问你。 我的代码中有一件事我不喜欢,并且认为它是以错误的方式实现的。 我的托管bean是请求作用域。在jsf中,我使用rich:pickList,它从列表中获取数据

@Scope("request")
public class MyBean{
     private List<String> sourceList;
     ....     

     public List<String> getsourceList() {
            //if (sourceList == null)    <--- Has no sence in request scoped bean
             { sourceList = service.loadList();
             }
             return sourceList;
     }

....

}
@范围(“请求”)
公共类MyBean{
私有列表源列表;
....     
公共列表getsourceList(){

//如果(sourceList==null)每个人都有这个问题,因为没有“对话”范围。您有“会话”(只要用户登录)和“请求”(一个请求/响应周期)

你需要的是说“用户已经开始了一个对话”,然后做几个属于对话的请求,最后结束对话

由于JavaEE不支持这一点,您必须对其进行模拟。当用户启动对话时,将bean放入会话范围并保留在会话范围内。当用户完成对话时,手动删除bean或告诉它清理缓存。

Spring WebFlow中实际上有一个“对话范围”:


如果您使用的是JSF2.0,您可以通过以下方式使用新的视图范围

@ManagedBean
@视域
公共类Bean{
私人名单;
@EJB
私人餐饮服务;
@施工后
公共void init(){
foos=fooService.list();
}
公共列表getFoos(){
返回foos;
}
}
当您仍然使用JSF 1.x时,最好知道and对具有上述代码设计的请求范围bean具有完全相同的效果(即不在getter中加载数据):




我没有使用新的RichFaces的KeepAlive注释,但是关于文档,它的行为也应该相同。

在web.xml中添加Spring RequestContextListener,Spring可以添加请求范围和会话范围

<listener>
     <listener-class>
          org.springframework.web.context.request.RequestContextListener
     </listener-class>  
</listener>

org.springframework.web.context.request.RequestContextListener

Cf:

那么keepAlive特性呢?它会有帮助还是不是一个好的实践?有很多keepAlive特性。你在说哪一个?嗯:-/在Spring文档中找不到该注释。完整的限定名是什么?:)这是整个包。org.ajax4jsf.model.keepAlive我已经阅读了指南,我想这就是我所写的感谢您对对话范围的建议,有趣的想法:)注释的完整限定名是什么?
@KeepAlive
?或者您有文档的URL吗?
<a4j:keepAlive beanName="#{bean}" />
<t:saveState beanName="#{bean}" />
<listener>
     <listener-class>
          org.springframework.web.context.request.RequestContextListener
     </listener-class>  
</listener>