0

我只是把我的问题的大纲放在这里,因为很难描述真实的场景。我在 jsf 1.2 和 Rich faces 3 中有一个应用程序。它将员工基本数据和相关数据(家庭、就业记录、资格等)存储在单独的表中。当用户点击自己的名字时。与员工相关的几个表格的详细信息显示在页面上。像家庭,就业记录,资格记录等。员工基本表中的主键是emp_id(一个数字)。此键是所有相关子表中的外键。应用在不同城市集中部署和使用。问题是,当特定员工点击其详细信息时......未知记录会显示在他的帐户中,就像任何其他员工的家人一样......界面就像

  ---------------------------------------------------------------------------
     Wellcome Mr. Campatrick,Sales Executive             <<View Details>>
  ---------------------------------------------------------------------------

单击查看详细信息时....在employee_bean 中设置了Mr.Campatrick 的emp_id。其中employee_bean 是会话范围的。如果这有任何意义....当我在“查看详细信息”链接上明确设置 emp_id 时,可能是什么原因导致混淆记录。这与“内存泄漏”有关吗?如果是,在哪里检查。

4

1 回答 1

2

这个问题看起来是在会话范围内滥用托管 bean。既然您说您使用 JSF 1.2 和 RichFaces 3,我建议您将托管 bean 从会话范围更改为请求范围,并将@KeepAlive注释添加到必须充当视图范围的那些托管 bean。

你的豆子看起来像

@KeepAlive
public class NoSessionScopeAnymore {
    //fields, constructor, getters and setters, methods...
}

有关 KeepAlive 注释或作为组件的更多信息:<a4j:keepAlive>

从 JSF 2 开始,您将不需要它,因为您可以使用@ViewScoped解决请求和会话之间桥梁的问题。有关托管 bean 范围的更多信息:

于 2013-07-04T15:18:54.567 回答