私の Web ページには、シンプルなバッキング Bean を持つプライムフェイスのデータテーブルがあります。フェーズ リスナーを使用して、舞台裏で何が起こっているかをログに記録します。見よ、この単純なページは、ページが更新されるたびにJSFライフサイクルを7回以上実行します!!! 何が起こっている?
<p:dataTable id="readers" var="reader" value="#{readerManagerBean.texts}"
rowKey="#{reader.id}" selection="#{readerBean.selectedText}"
selectionMode="multiple">
<p:column headerText="Reader Name" width="820">
<h:outputText value="#{reader.name}" />
</p:column>
</p:dataTable>
バッキング Bean は次のとおりです。
@ManagedBean
@RequestScoped
public class ReaderManagerBean {
private ArrayList<Text> texts;
private Text selectedText;
@EJB
private TextFacade t;
public Text getSelectedText() {
return selectedText;
}
public void setSelectedText(Text selectedText) {
this.selectedText = selectedText;
}
public ArrayList<Text> getTexts() {
ArrayList<Text> texts = new ArrayList<Text>();
texts.addAll(t.findAll());
return texts;
}
public void setTexts(ArrayList<Text> texts) {
this.texts = texts;
}
}