동적 패널 (다양한 항목이있는 패널)을 만들고 나서 뷰 페이지의 패널 구성 요소에 바인드하려면 패널 객체가있는 관리 빈의 범위는 @ViewScoped
입니다. ajax
이보기 페이지에서이 패널을 렌더링하면 관리 빈을 다시 빌드한다는 것을 알았습니다. 그 이유는 무엇입니까? ,보기 범위가 지정된 관리 Bean에서 개체와 구성 요소를 바인딩하는 방법은 무엇입니까?
<h:form>
<ace:panel binding="#{myBean.myPanel}"></ace:panel>
<ace:pushButton actionListener="#{myBean.something}">
<ace:ajax render="@form" />
</ace:pushButton>
</h:form>
내가 버튼을 누를 때마다에서의 관리 빈 생성자가 호출 :이 관리 빈입니다
:
package test;
import org.icefaces.ace.component.panel.Panel;
@ManagedBean(name = "myBean")
@ViewScoped
public class myBean {
private Panel myPanel;
// Constructor
public myBean() {
myPanel = drawPanel(); // this function initiate and add items to the panel
}
// Setters and Getters Methods
}
이보기 페이지는 여기 내 코드입니다 왜 그런 일이 일어 났습니까? 또한 패널 구성 요소에서 바인딩 특성을 제거하거나 관리되는 빈 세션 또는 응용 프로그램 범위의 범위를 만들면 생성자가 호출되지 않습니다.
참고 : icefaces 3 및 jsf 2.0을 사용하고 있습니다.
이 상황에 대한 해결책이 있습니까? ICEFaces 문서로