假设我有一个 SessionScoped 的 bean。 (称之为:Bean A)
当我请求访问此 bean 的页面时,此 bean 会被初始化,并相应地设置它的一些属性。
然后我访问与此 bean 无关的其他页面。 ( Bean A ) 但是,我仍然想在调试器中查看此 Bean 状态。我怎样才能做到这一点?
如果我的问题不清楚,我会尝试重新表述:
@SessionScoped
@Named
public class User{
private String name;
//getters,setters
}
现在想象一个 user.xhtml,它将名称设置为 user.name..
现在假设我在 someotherpage.xhtml 页面上,并且正在调试我的应用程序。
由于此 bean 是 session 范围的(即仍在范围内),因此调试器必须能够以某种方式访问它。但如何呢?
最佳答案
我对IntelliJ不熟悉,但是,我看到有一个console debug tool ,您可以在执行时访问变量值。只需在您想要的位置停止执行并使用它来访问 faces 上下文并使用其名称获取托管 bean:
FacesContext context = FacesContext.getCurrentInstance();
context.getApplication().evaluateExpressionGet(context, "#{" + beanName + "}", Object.class);
当使用CDI时,你可以像下面这样做:
@Inject
private Bean bean;
来自this SO answer .
问候。
关于java - 如何调试 session 范围的 bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16997759/