java - 如何调试 session 范围的 bean?

标签 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 是 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/

相关文章:

javascript - Primefaces 以编程方式触发的事件触发两次

java - 写入数据库时​​错误的 UTF-8 编码(读取正常)

java - 带有迭代器的 ConcurrentModificationException

java - Spring 注解 : @Component works, @Repository 没有

java - 如何获得计算机的唯一标识符?

debugging - 如何在 Eclipse 中调试 Apache Storm?

javascript - Django 渲染一个 "in exception"的页面而不是一个可以帮助调试的页面

java - 如何在Eclipse中的Java程序中以非侵入的方式添加跟踪

java - 缓存对象并在jsf中使用它们

java - 在java中将普通字符串转换为JSON