如何调试sessioncoped bean?

时间:2013-06-08 08:53:09

标签: java debugging jsf cdi

想象一下,我有一个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是sessioncoped,意思仍然在范围内,所以调试器必须以某种方式访问​​它。但是如何?

2 个答案:

答案 0 :(得分:0)

我不熟悉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

问候。

答案 1 :(得分:0)

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