Int 始终为 0 - JSF

Int is always 0 - JSF

我的 JSF 应用程序有问题,因为我正在创建具有优惠券 int 值的用户对象并且我想显示它们,但它不起作用。优惠券始终为0。其余(用户名和内容)正常加载。

这是一些代码: Service.java

        User admin = new User("JustCinek", "26454dd458d9b07364a3a198fcfd459f", "marcingadomski94@gmail.com", "Jettesvej 15, 2TV", "8220", "Aarhus", 100);
        users.add(admin);

User.java

public User(String username, String password, String email, String address, String zipCode, String town, int coupons){
    this.username = username;
    this.password = password;
    this.email = email;
    this.address = address;
    this.zipCode = zipCode;
    this.town = town;
    this.coupons = coupons;
}

public int getCoupons(){ return this.coupons; }
public void setCoupons(int coupons){ this.coupons = coupons; }

index.xhtml

            <h:form rendered="#{user.loggedIn}">
                <div id="menuItem" class="clearfix">
                    Witaj, #{user.username}!<br></br>
                    Twoje kupony: #{user.coupons}
                </div>
            </h:form>

用户名正常显示,优惠券始终为 0,即使在服务 class 中创建用户对象并将优惠券值设置为 100

我认为您只是在此处混合 User 实例化:

User admin = new User("JustCinek", "26454dd458d9b07364a3a198fcfd459f", "marcingadomski94@gmail.com", "Jettesvej 15, 2TV", "8220", "Aarhus", 100);

这是在另一个 bean (service.java) 中发生的 user 托管 bean 实例化,这将在您首次调用 bean 时发生。

请注意,您在 JSF 页面中使用的 user 对象是托管 bean User 的名称,与您在服务中实例化的 admin 不同bean,所以您在呈现页面后获得的用户名可能是您在托管 bean 中设置或初始化的用户名,而不是在服务 bean 中,这解释了为什么您可以看到有效的用户名,而您的优惠券仍然存在 0(未初始化,因此它将获得默认值,对于 int0