私は動的なパネル(さまざまな項目を持つパネル)を作成しようとしています。次に、ビュー・ページのパネル・コンポーネントとバインドする場合、パネル・オブジェクトを持つマネージドBeanのスコープは@ViewScoped
です。 ajax
のいずれかがビューページのこのパネルをレンダリングして、マネージドBeanを再構築することに気付きました。なぜですか?ここで が私のコードです:ビュースコープ管理対象Bean内のオブジェクトとコンポーネントをバインドする方法はありますか。
これは管理Beanです:
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
}
と、このビューのページ:
<h:form>
<ace:panel binding="#{myBean.myPanel}"></ace:panel>
<ace:pushButton actionListener="#{myBean.something}">
<ace:ajax render="@form" />
</ace:pushButton>
</h:form>
私はボタンを押すたびに、管理対象Beanのコンストラクタが呼び出され、なぜそれが起こったのですか? また、パネルコンポーネントからバインディング属性を削除するか、マネージドBeanセッションまたはアプリケーションスコープのスコープを作成すると、コンストラクタが呼び出されなかったことに気付きました。
注:iceface 3とjsf 2.0を使用しています。
この状況に対応するソリューションはありますか? ICEfacesをドキュメントとして