gpt4 book ai didi

java - @Model Java 类中变量的范围是什么?

转载 作者:行者123 更新时间:2023-12-01 13:59:37 26 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。我调用 ProcessInfo 来运行一些逻辑并将 continueRegistration 设置为 true。在我的表单上,我有一个调用 Register 方法的表单。现在,ProcessInfo 始终在 Register 之前运行,因此应该将 continueRegistration 设置为 true,确实如此,但当调用 Register 方法时 continueRegistration 显示为 false。知道为什么没有设置吗?

我在更改器(mutator)中放置了一条打印语句,它表明它被设置为 true。

@Model
public class LoginController implements Serializable{
private boolean continueRegistration;

public void ProcessInfo(){
... do something
setContinueRegistration(true)
}

public void Register(){
if(getContinueRegistration()){
...continue flow
}
}

public boolean getContinueRegistration() {
return continueRegistration;
}

public void setContinueRegistration(boolean continueRegistration) {
System.out.println("Set continueRegistration: "+continueRegistration);
this.continueRegistration = continueRegistration;
}

最佳答案

我猜你的问题是你在单独的请求中调用ProcessInfo,然后调用Register。这显然行不通,因为 @Model 是一个具有 @RequestScoped 的构造型,这意味着这个 bean 将始终在每个请求时重新创建。查看源码

@Named
@RequestScoped
@Stereotype
@Target({TYPE, METHOD, FIELD})
@Retention(RUNTIME)
public @interface Model {}

因此,如果您的注册是一个多步骤过程,那么我建议您使用 @ConversationalScoped ,它可以承受多个请求,并且您可以控制完成注册所需的所有步骤。一些基础教程here .

附注Java 约定规定,命名 Java 方法时应使用小写首字母,因此请更改 processInfo()

关于java - @Model Java 类中变量的范围是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19414055/

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