Java 如何调试sessionscoped bean?

Java 如何调试sessionscoped bean?,java,debugging,jsf,cdi,Java,Debugging,Jsf,Cdi,想象一下,我有一个正在处理会话的bean。(称之为:Bean A) 当我请求一个访问这个bean的页面时,这个bean被初始化,并相应地设置它的一些属性 然后我访问其他一些与这个bean无关的页面。(Bean A)但是,我仍然希望在我的调试器中看到这个Bean状态。我该怎么做 如果我的问题不清楚,我将尝试重新措辞: @SessionScoped @Named public class User{ private String name; //getters,setters }

想象一下,我有一个正在处理会话的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是sessionscoped的,这意味着它仍然在作用域中,因此调试器必须能够以某种方式访问它。但是怎么做呢?

我对IntelliJ不太熟悉,但是,我看到有一个,在执行时可以访问变量值。只需在需要的地方停止执行,并使用它访问faces上下文,然后使用其名称获取托管bean:

  FacesContext context = FacesContext.getCurrentInstance();
  context.getApplication().evaluateExpressionGet(context, "#{" + beanName + "}", Object.class);
使用CDI时,您可以按如下方式执行:

@Inject
private Bean bean;
从…得到


注意。

会话作用域对象将在HTTP会话中具有引用。只要您对HTTP请求执行某些操作,您就应该能够访问会话,然后访问会话范围的bean。

您使用的是哪台应用程序服务器?您试图完成的任务没有多大意义(至少我找不到处理此场景的真实用例)。尽管如此,最好的办法还是按照BalusC在XtremeBiker答案底部的链接中解释的多种方法之一,在代码中的某个地方检索会话范围的bean。我想你可以修改BalusC提供的CDI答案,因为OP正在使用它(注意他代码中的
@Named
注释)。