我有一个会话范围的托管 bean,带有一个属性current
。如果我有方法
public void resetCurrent() {
current = new Configuration();
}
在 bean 中,每次我导航到应用程序中的新页面时都会自动调用它。这是正常行为吗?我没有在代码中的任何地方调用该方法。
考虑到这种重置会话 bean 属性的方法至少可以说不太理想,这将是实现它的正确方法?
谢谢你。
我有一个会话范围的托管 bean,带有一个属性current
。如果我有方法
public void resetCurrent() {
current = new Configuration();
}
在 bean 中,每次我导航到应用程序中的新页面时都会自动调用它。这是正常行为吗?我没有在代码中的任何地方调用该方法。
考虑到这种重置会话 bean 属性的方法至少可以说不太理想,这将是实现它的正确方法?
谢谢你。
JSF 不这样做。这是你的代码。您的视图或另一个 bean 或者 bean 本身正在调用它。在该行上放置一个调试断点或添加Thread.dumpStack()
应该可以让您通过读取调用堆栈了解谁在调用它。或者只是将该方法重命名为其他名称,并检查您是否在构建期间没有看到编译错误或在运行时获得 EL 异常,这应该可以查明调用者。
考虑到这种重置会话 bean 属性的方法至少可以说不太理想,这将是实现它的正确方法?
取决于功能要求。例如,如果 bean 应该保存视图范围内的数据,则将其放在视图范围内。或者,如果它应该保存会话范围的数据(例如登录用户)并且您基本上是注销,那么宁可使会话无效。