ah:panelgroup 内に ui:repeat があり、パネルの外に af:ajax があります。f:ajax クリック イベントは、h:panelgroup でレンダリングをトリガーします。ページを読み込むと、リピーターは私の 5 つのアイテムをリストに表示します。ボタンを初めてクリックすると、h:panelgroup が 2 倍の 10 項目になり、その後クリックするたびに、パネルの最初の 5 項目が更新されます (当然のことです)。私は何を間違っていますか?レンダリング イベントは、常にリピーターを含むパネルを更新するだけでよいのではないでしょうか?
豆:
@ManagedBean(name = "TestBean")
@RequestScoped
public class TestBean {
private List testStrings;
public TestBean() {
Random rn = new Random(System.currentTimeMillis());
testStrings = Arrays.asList(rn.nextInt(),rn.nextInt(),rn.nextInt(),rn.nextInt(),rn.nextInt());
}
}
public List getTestStrings() {
return testStrings;
}
public void setTestStrings(List testStrings) {
this.testStrings = testStrings;
}
JSF:
<h:commandButton value="Refresh">
<f:ajax event="click" render="testPanel"></f:ajax>
</h:commandButton>
<p>
<h:panelGroup id="testPanel">
<ui:repeat var="option" value="#{TestBean.testStrings}" varStatus="status">
<p>
<h:outputText value="#{option}"></h:outputText>
</p>
</ui:repeat>
</h:panelGroup>
</p>
私はmojarra 2.1を使用していると思います。
ありがとう。
答え
<p>...</p>
を取り外して交換しても問題は発生しません<h:outputText value="#{option}"></h:outputText><br/>