gpt4 book ai didi

java - 添加@Named 时@SessionScoped 不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:01:20 26 4
gpt4 key购买 nike

考虑以下支持 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 时,它似乎不再具有 session 范围。按钮仍然有效(点击在服务器端处理),但计数器的值始终保持为零。我使用注释是因为在我的实际应用程序中我需要将其他 bean 注入(inject)到这个 bean 中,而这个注释似乎是必需的(如果我错了请纠正我)。这种行为的原因是什么?我该怎么做才能解决这个问题?

最佳答案

您不能将 JSF 与 CDI 注释混合使用。使用其中之一。在这种情况下,您需要导入 javax.enterprise.context.SessionScoped而不是 javax.faces.bean.SessionScoped

关于java - 添加@Named 时@SessionScoped 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6244965/

26 4 0