首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSF会话范围的受管bean列表

JSF会话范围的受管bean列表
EN

Stack Overflow用户
提问于 2011-10-22 04:12:42
回答 1查看 1.4K关注 0票数 0

我在请求作用域中定义了JSF处理程序,如下所示

代码语言:javascript
复制
public class JsfHandler {
  private List<ManagedBean>  managedBeanList;   // managed bean List in session scope
}

    <managed-bean>
        <managed-bean-name>jsfHandler</managed-bean-name>
        <managed-bean-class>com.test.JsfHandler</managed-bean-class>
         <managed-bean-scope>request</managed-bean-scope>
        <managed-property>
            <property-name>managedBeanList</property-name>
            <value>#{managedBeanList}</value>
        </managed-property>
      </managed-bean>

我在JSF中有一个会话范围的JSF托管bean列表,定义如下。

代码语言:javascript
复制
   <managed-bean>
      <managed-bean-name>managedBeanList</managed-bean-name>
      <managed-bean-class>java.util.ArrayList</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
   </managed-bean>

方法1:

代码语言:javascript
复制
managedBeanList.clear();
managedBeanList.addAll(service.getResultList());  
// assuming service.getResultList() would return a new ArrayList();

方法2:

代码语言:javascript
复制
managedBeanList =  service.getResultList();
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("managedBeanList",managedBeanList);

我们目前使用的是方法1。

方法2正确吗?在appraoch 2中调用Java Garabage收集器时,在内存使用方面是否有任何优势。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-22 04:22:29

两者都不正确。该列表必须是会话范围的托管bean的属性。您应该尽可能避免手动修改会话映射。

两者都不比另一个更“GC友好”。在方法1中,您最终得到了一个由service.getResultList()返回的列表中未引用的实例。在方法2中,您最终得到了列表的一个未引用的实例,该实例以前由managedBeanList引用。在这两种情况下,GC都必须做相同的工作:清理未引用的实例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7854755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档