2011-03-03 2 views
1
public class MyBean { 
    private Integer [] myField; 


    public Integer [] getMyField() { 
     return myField; 
    } 
    public void setMyField(Integer [] myField) { 
     this.myField = myField; 
    } 

에 전에 초기화 그리고 응용 프로그램에서 나는이 값을 변경하려면,변경 콩 얼굴-config.xml에

<managed-bean-name>myBean</managed-bean-name> 
     <managed-bean-class>com.path.bean.MyBean</managed-bean-class> 
     <managed-bean-scope>request</managed-bean-scope> 
     <managed-property> 
      <property-name>myField</property-name> 
      <list-entries> 
        <value>6</value> 
        <value>12</value> 
        <value>24</value>  
      </list-entries> 
     </managed-property>   
    </managed-bean> 

그리고이 방법으로 얼굴-config.xml의에서이 같은 빈을 초기화합니다. 이 작업을 수행하려면 :

 MyBean myBean = new MyBean(); 
     Integer [] results = myBean.getMyfield(); 
     //Change the value of this array 
     visualizationBean.setResultsPerPage(results); 

을하지만 이것이 가능하지, Integer [] results = myBean.getMyfield() 나에게 null을 제공합니다. 어쨌든, 내 응용 프로그램의 인터페이스에서 값 6, 12 및 24를 보유하고 있기 때문에 Bean이 올바르게 초기화되었음을 알 수 있습니다.
모든 종류의 도움말 ?? 미리 감사드립니다.

답변

3

MyBeannew을 사용하여 인스턴스화하면 Faces-Config가 검색되지 않습니다. 단순히 생성자를 사용하여 객체를 생성합니다.

당신이 당신의 상황이

@ManagedBean(eager=true) 

를 사용하여 초기화 될 때 초기화 범위지도에서 Bean 인스턴스를 검색 할 수 jsf2.0 메이크업 콩을 사용하는 경우. 그 응용 프로그램이 콩을 범위면.

MyBean mb = (MyBean)FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("beanName"); 

업데이트 : 관리되는 bean이 같아야합니다

,

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.RequestScoped; 

@ManagedBean(eager="true") 
@RequestScoped 
public class MyBean { 

그냥 BalusC 단순히 그것을 주입 얻을 제안 후 다른 콩에서 콩을 사용하려는 경우

값을 사용하지 않고 new

예 : 원하는 경우 MyBean 폽푸 SomeOtherBean 덧 씌워져 다음

@ManagedBean() 
@RequestScoped 
public class SomeOtherBean { 
    @ManagedProperty(value="#{myBean}") 
    private MyBean myBean; 
    //getters & setters of myBean 

업데이트 JSF 1.2

, 당신은 새로운 사용하여 객체를 생성하는

<managed-bean> 
    <managed-bean-name>myBean</managed-bean-name> 
    <managed-bean-class>com.example.my.MyBean</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
</managed-bean> 

<managed-bean> 
    <managed-bean-name>someAnotherBean</managed-bean-name> 
    <managed-bean-class>com.example.some.AnotherBean</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
    <managed-property> 
     <property-name>myBean</property-name> 
     <value>#{myBean}</value> 
    </managed-property> 
</managed-bean> 
+0

jsf2.0을 사용하고 있는데, @ManagedBean (eager = true) 태그를 어디에 넣어야합니까 ??? 빈 선언에서 ?? IDE에서 오류가 발생했습니다. –

+0

업데이트 된 응답 확인 –

+0

감사합니다. 내게 많은 도움을주었습니다. –

1

아래와 같이 어떤 주석, 당신은 당신의 faces-config.xml를 구성 할 필요가 없습니다이 같은 MyBean myBean = new MyBean();

따라서 null이 발생합니다.