gpt4 book ai didi

java - JSF 防止命令按钮自动回调到类构造函数

转载 作者:行者123 更新时间:2023-12-02 06:50:58 26 4
gpt4 key购买 nike

我有一个 bean 类,如下:

static int variable_static;

public RestaurantBean() {
variable_static = 0;
}

//...

//value of variable_static changes throughout the code
//...

public string button() {
//firing this button causes the variable_static value to change back to 0
return null;
}

我有一个静态变量,它的值在整个代码中都会发生变化(我通过打印出它的值来知道它),但是当按钮被触发时,它的值会自动变回默认值,这不是我想要的。这是 JSF 中的回发吗?我怎样才能防止这种情况发生?

最佳答案

问题在于,由于它是一个 @RequestScoped bean,因此它是在每个请求(包括 ajax 请求)上创建的,并且构造函数将 static 变量重新初始化为0(默认值)。顺便说一句,这是在您的构造函数中完成的:

public RestaurantBean() {
//this is the culprit
variable_static = 0;
}

了解了这一点,解决方案将把 bean 的范围更改为更宽的范围,例如 @ViewScoped@SessionScoped(具体取决于根据您的需要)。

在此之后,现在 BalusC 和我的想法是:为什么要使用 static 字段?至少该字段的唯一目的是在同一 View 中的多个请求中生存(这已经由@ViewScoped完成),那么就没有理由标记它使用 static 修饰符除非您与其他类共享此变量(这将是您的应用程序的奇怪设计)。

有关此的更多信息:

关于java - JSF 防止命令按钮自动回调到类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18036947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com