0

想象一下,我有一个 SessionScoped 的 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 是会话作用域的,也就是说仍然在作用域内,所以调试器必须能够以某种方式访问​​它。但是怎么做?

4

2 回答 2

1

我不熟悉 IntelliJ,但是,我看到有一个控制台调试工具,您可以在执行时访问变量值。只需在您想要的地方停止执行并使用它来访问 faces 上下文并使用其名称获取托管 bean:

  FacesContext context = FacesContext.getCurrentInstance();
  context.getApplication().evaluateExpressionGet(context, "#{" + beanName + "}", Object.class);

使用 CDI 时,您可以执行以下操作:

@Inject
private Bean bean;

这个 SO 答案中得到。

问候。

于 2013-06-08T10:11:37.310 回答
0

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

于 2013-06-08T16:19:26.487 回答