0

我有一个会话范围的托管 bean,带有一个属性current。如果我有方法

   public void resetCurrent() {
       current = new Configuration();
   }

在 bean 中,每次我导航到应用程序中的新页面时都会自动调用它。这是正常行为吗?我没有在代码中的任何地方调用该方法。

考虑到这种重置会话 bean 属性的方法至少可以说不太理想,这将是实现它的正确方法?

谢谢你。

4

1 回答 1

1

JSF 不这样做。这是你的代码。您的视图或另一个 bean 或者 bean 本身正在调用它。在该行上放置一个调试断点或添加Thread.dumpStack()应该可以让您通过读取调用堆栈了解谁在调用它。或者只是将该方法重命名为其他名称,并检查您是否在构建期间没有看到编译错误或在运行时获得 EL 异常,这应该可以查明调用者。


考虑到这种重置会话 bean 属性的方法至少可以说不太理想,这将是实现它的正确方法?

取决于功能要求。例如,如果 bean 应该保存视图范围内的数据,则将其放在视图范围内。或者,如果它应该保存会话范围的数据(例如登录用户)并且您基本上是注销,那么宁可使会话无效。

于 2011-11-19T23:34:33.230 回答