添加@Named时@SessionScoped不起作用

2024-05-22

考虑以下支持 bean:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class Counter {

    int counter;

    public Counter() {
        this.counter = 0;
    }

    public void Increment() {
        this.counter++;
    }

    public void Decrement() {
        this.counter--;
    }

    public int getCounter() {
        return this.counter;
    }

}

我创建了一个 JSF 页面,它显示计数器的值,并有两个按钮用于递增和递减计数器的值。它按预期工作。但是,当我添加注释时javax.inject.Named对于 bean 来说,它似乎不再具有会话范围。这些按钮仍然有效(单击是在服务器端处理的),但计数器的值始终保持为零。我使用注释是因为在我的实际应用程序中,我需要将其他bean注入到这个注释中,并且这个注释似乎是必需的(如果我错了,请纠正我)。这种行为的原因是什么?我可以做些什么来解决这个问题?


您不能将 JSF 与 CDI 注释混合使用。使用其中之一。在这种情况下,您需要导入javax.enterprise.context.SessionScoped http://download.oracle.com/javaee/6/api/javax/enterprise/context/SessionScoped.html代替javax.faces.bean.SessionScoped.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加@Named时@SessionScoped不起作用 的相关文章

随机推荐