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