2010-08-20 4 views
0

자바에서 생성자의 코드는 일부 actionListener를 통해 페이지가 새로 고쳐지더라도 한 번만 호출됩니다. C# Page.PostBack 메서드에서 잘 작동하지만 여기서 자바 올바른 방법을 찾을 수 없습니다.자바에서 생성자의 코드가 한번만 호출된다면 페이지가 새로 고쳐집니다

+0

application을 사용할 수 있습니다 에 대해 말하다? Java 생성자는 인스턴스 당 한 번만 호출됩니다. 생성자 코드가 예상보다 많이 호출되면 예상보다 많은 객체를 생성 할 수 있습니다. – Stroboskop

+0

jsf 페이지 모든 새로 고침 호출 기본 생성자 ... – senzacionale

답변

3

당신은 알 수는 : 모든 생성자가 호출되는 기본 새로 고침에 대한

import javax.faces.bean.ManagedBean; 
import javax.faces.context.FacesContext; 

@ManagedBean 
public class HelperBean { 

    public boolean isPostback() { 
      FacesContext context = FacesContext.getCurrentInstance(); 
      return context.getRenderKit().getResponseStateManager().isPostback(context); 
     } 

} 

, 그것은 여러분의 빈 것을 의미하는 경우 RequestScoped입니다. 새로 고침 (GET) 또는 다시 게시 (POST)는 요청으로 간주되므로 모든 요청에 ​​대해 빈이 만들어집니다. SessionScoped 또는 ApplicationScoped과 같은 다른 인스턴스화 옵션이 있거나 위의 기능을 사용하여 포스트 백이 발생할 경우 인스턴스화하면됩니다.

/WEB-INF 아래 라 JSF1.2이

을 편집 faces-config.xml 파일있는 범위를 설정 :

<managed-bean> 
    <managed-bean-name>myBean</managed-bean-name> 
    <managed-bean-class>com.mypackage.myBean</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
</managed-bean> 

는 "페이지"를 무엇 request, session 또는

3

JSF에 대해 이야기하는 경우 BackingBeans 범위를 "Application"또는 "Session"에서 "Request"로 변경해야합니다.

이렇게하면 요청에 따라 생성자가 작동합니다.

는 JSF 2.0

예 :이 함수 등으로 다시 게시 때

@ManagedBean() 
@SessionScoped 
public class MyBackingBean { 
    ... 
} 

@ManagedBean() 
@RequestScoped 
public class MyBackingBean { 
    ... 
} 
관련 문제