gpt4 book ai didi

java - Scope 如何影响 Bean 的对象?

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

我正在阅读整篇文章introduction要理解何时以及为什么我们应该选择一个特定的作用域,对于静态字段和方法来说是很清楚的,但对于 Bean 本身的对象来说却不是,至少对我来说是这样。

Bean1:

@ManagedBean
@SessionScoped
public class ConsultBean implements java.io.Serializable {
public String name="oldName";

public String getResults(){
return "index";
}
..

Bean2:

@ManagedBean
@SessionScoped
public class TestBean implements java.io.Serializable {
public ConsultBean obj=new ConsultBean();

public String show(){
obj.setName("newName");
return obj.getResults();
}
..

index.jspx/xhtml

<h:panelGrid  columns="2">
<h:outputText value="Result:"/>
<h:outputText value="#{consultBean.name}"/>
</h:panelGrid>

结果是:oldName!

但是当:

public String getResults(){
this.setName("New Name")
return "index";
}

结果仍然是:oldName!!

发起调用的对象重要吗?

最佳答案

问题是public ConsultBean obj=new ConsultBean();,您不应该实例化托管bean。框架的工作就是为您完成这件事,这就是托管 bean 的全部意义。

使用 ManagedProperty 注入(inject) ConsultBean .

不过,我建议您使用 CDI 而不是旧的 jsf bean api

关于java - Scope 如何影响 Bean 的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53503065/

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