Как Область применения влияет на объекты Боба? - PullRequest
0 голосов
/ 27 ноября 2018

Я читал все это введение , чтобы понять, когда и почему мы должны выбрать конкретную Область, это понятно для статических полей и методов, но для объектов самого Бина это не так, по крайней мередля меня.

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";  
    }

Результат STILL: oldName !!

Имеет ли значение объект, с которого был инициирован вызов?

1 Ответ

0 голосов
/ 27 ноября 2018

Проблема в public ConsultBean obj=new ConsultBean();, вы не должны создавать экземпляры управляемых компонентов.Задача фреймворка - сделать это для вас, в этом весь смысл управляемых компонентов.

Внедрить ConsultBean с ManagedProperty .

Хотя я бы посоветовал вам использовать CDI вместо старого jsf bean api

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...